Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support the new Skyway API of the Mesh extension #350

Open
takaokouji opened this issue Mar 24, 2024 · 3 comments
Open

Support the new Skyway API of the Mesh extension #350

takaokouji opened this issue Mar 24, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@takaokouji
Copy link

takaokouji commented Mar 24, 2024

TL;DR

Support the new Skyway API of the Mesh extension. The current Skyway API is obsolated.

Japanese:
Mesh拡張で Skyway の新しいAPIを使う。従来の Skyway API は継続利用できるが新しくAPIキーが発行されない。そのため、スモウルビーのmodが開発できない。

Details

Mesh拡張で Skyway の新しいAPIを使えるようにします。
https://skyway.ntt.com/ja/

まずは従来の Skyway API を使ったバージョンもつかえるようにします。
モジュール化して、URLに新しいバージョンを使う旨のフラグを指定すると、新しいバージョンを使えるようにします。
しばらく使ってみて問題なければ、従来のバージョンを廃止して新しいバージョンのみに切り替えます。

@takaokouji takaokouji added the enhancement New feature or request label Mar 24, 2024
@sada
Copy link

sada commented May 9, 2024

旧SkyWayのAPIは、APIキーをソースコードに埋め込んで使用しています。

https://github.com/smalruby/scratch-vm/blob/41f9bb7dd51c131ab35644c354b43c303fe43cb8/src/extensions/scratch3_mesh/mesh-service.js#L192

チュートリアルの注意書きで、トークンの生成をサーバでおこない、クライアントへ渡すべきとあります。
現在のスモウルビーの使い方とは違うように思いました。

本チュートリアルでは、すぐに通信を試していただくために、トークン生成をクライアントアプリケーションで実装していますが、 本来、SkyWay Auth Token はサーバーアプリケーションで生成してクライアントアプリケーションに渡すようにするべきです。
クライアントアプリケーションでトークン生成を行った場合、任意の Channel(Room) に入ることができるようなトークンを第三者が作成する可能性があります。

トークンの生成でアプリケーションIDとシークレットキーを指定する必要があるので、そのためにサーバで生成するのが推奨されているようです。

const token = new SkyWayAuthToken({
  jti: uuidV4(),
  iat: nowInSec(),
  exp: nowInSec() + 60 * 60 * 24,
  scope: {
    app: {
      id: "ここにアプリケーションIDをペーストしてください",
      turn: true,
      actions: ["read"],
      channels: [
        {
          id: "*",
          name: "*",
          actions: ["write"],
          members: [
            {
              id: "*",
              name: "*",
              actions: ["write"],
              publication: {
                actions: ["write"],
              },
              subscription: {
                actions: ["write"],
              },
            },
          ],
          sfuBots: [
            {
              actions: ["write"],
              forwardings: [
                {
                  actions: ["write"],
                },
              ],
            },
          ],
        },
      ],
    },
  },
}).encode("ここにシークレットキーをペーストしてください");

https://skyway.ntt.com/ja/docs/user-guide/javascript-sdk/quickstart/

そのため、このトークンを返すサーバを用意していただく必要があるようです。

@sada
Copy link

sada commented May 9, 2024

SkyWayの動作を確認するため https://github.com/smalruby/smalruby3-develop でDocker環境を利用しようとしましたが、こちらのDockerイメージのビルドに失敗しました。
docker compose build すると途中でエラーが発生して失敗します。

guilib のディレクトリ以下で同じように docker build すると失敗しました。
gui の方は npm install の時にエラーが発生しました。

lib の方は ruby:2.3.8-slim-jessieapt update する時に jessie のパッケージ取得先がなくなったことによる影響のようでした。
以下のような似たようなissueが作成されていました。

docker-library/ruby#276

Dockerイメージでの確認方法は使用できないようなので、手元で smalruby3-gui のディレクトリ以下で npm install して npm start して起動できるかを確認しました。
スモウルビーが起動するところまでは確認しました。

@takaokouji
Copy link
Author

takaokouji commented Oct 9, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants