現在ドキュメントは制作段階にあるため、多くの情報が不完全なものになっています

報告は Discord までお願いします

セッション

概要

親子関係を持つアプリケーションを作成し、セッションを管理しましょう

子アプリケーションの定義

子アプリケーションを作成するには、

parentId
を設定した
App
オブジェクトを定義します

1
// 子アプリケーションの定義
2
const CHILD_APP = new App(PARENT_APP.id.join('child'), {
3
    parentId: PARENT_APP, // 親アプリケーションを指定(必須)
4
    url: 'https://omuapps.com/app/child', // 子アプリケーションのURL
5
});

子アプリのIDは、親アプリのIDの配下に置く必要があります。例えば親が

com.omuapps:parent
なら、上記の子は
com.omuapps:parent/child
になります。

必要な権限

トークンの生成には

GENERATE_TOKEN_PERMISSION_ID
、接続状態の監視には
SESSIONS_READ_PERMISSION_ID
が必要です。どちらも
omu.start()
より前に要求します。

1
import { OmuPermissions } from '@omujs/omu';
2
import { SESSIONS_READ_PERMISSION_ID } from '@omujs/omu/api/session';
3

4
omu.permissions.require(
5
    OmuPermissions.GENERATE_TOKEN_PERMISSION_ID,
6
    SESSIONS_READ_PERMISSION_ID,
7
);

トークンの生成と接続

子アプリケーションに接続するためのトークンを生成します

1
// 子アプリケーション用のトークンを生成
2
const params = await omu.sessions.generateToken({
3
    app: CHILD_APP,
4
    permissions: [
5
        OmuPermissions.ASSET_PERMISSION_ID, // 親が保有する範囲内で子へ引き継ぐ権限
6
        // その他の権限...
7
    ],
8
});
9

10
// 生成されたパラメータ
11
console.log(params.token);  // 子アプリケーション接続用トークン
12
console.log(params.address); // 接続先アドレス
13

14
// 子アプリケーション接続用のURLを作成
15
const url = new URL('https://omuapps.com/app/child');
16
url.searchParams.set(BrowserSession.PARAM_NAME, JSON.stringify(params));
17

18
// このURLを開くことで子アプリケーションが接続されます
19
console.log(url.toString());

注意点

  • トークンを生成できるのは子の親アプリだけです
  • 子のIDは親のIDの配下にある必要があります
  • 子は親が持っている権限以上の権限を持つことができません

セッションの要求と監視

子アプリケーションのセッションを管理するには、以下のメソッドを使用します

1
// require()はomu.start()より前に呼びます
2
// 子アプリケーションのセッションを要求
3
omu.sessions.require(CHILD_APP);
4

5
// 子アプリケーションの接続状態を監視
6
const observer = omu.sessions.observe(CHILD_APP);
7

8
// 子アプリケーションが接続されたときの処理
9
observer.onConnect((app) => {
10
    console.log(`子アプリケーションが接続されました: ${app.id.key()}`);
11
});
12

13
// 子アプリケーションが切断されたときの処理
14
observer.onDisconnect((app) => {
15
    console.log(`子アプリケーションが切断されました: ${app.id.key()}`);
16
});