API の違い

認証・認可の違い

新 SkyWay では認証・認可の方法が変わります。

旧 SkyWay では認証のみ提供していましたが、新 SkyWay では新たに認可も行うことができるようになりました。

旧 SkyWay

ドメインによる認証または Peer による認証を行います。

ドメインによる認証方法についてはダッシュボードの操作方法をご参照ください。

Peer の認証方法については認証サンプルをご参照ください。

新 SkyWay

トークンベースの認証・認可機能を提供しています。

詳しい認証・認可の方法はユーザーガイドをご参照ください。

旧 SkyWay の API について

旧 SkyWay で一部提供しなくなった API について新 SkyWay での代替手段を記載します。

Peer.listAllPeers()

旧 SkyWay の Peer は新 SkyWay の Member にあたります。Room に参加している Member 一覧は、P2PRoom.members プロパティ または SfuRoom.members プロパティ で取得できます。

Peer.fetchPeerExists()

P2PRoom.members プロパティ または SfuRoom.members プロパティ から Room に参加している Member 一覧を取得し、Member.id でフィルタリングすることで特定の Member が Room に存在するかを確認できます。

MeshRoom.send() / SFURoom.send()

新 SkyWay では代替手段として DataChannel を使う方法と Room.metadata を使う方法があります。

DataChannel を使ってデータを送信する(P2PRoom のみサポート)

P2PRoom の場合、WebRTC の DataChannel を使ってデータの送受信を行うことができます。

SkyWayStreamFactory.createDataStream を使って LocalDataStream を作成し、LocalDataStream.write メソッドでデータの送信を行います。データの受信は RemoteDataStream.onData でハンドリングできます。

送受信できるデータは string、JSON-serializable オブジェクト、ArrayBuffer として扱えるオブジェクトで、DataStreamMessageType として定義されています。

import { ..., SkyWayRoom, SkyWayStreamFactory, } from '@skyway-sdk/room'; ... const dataStream = await SkyWayStreamFactory.createDataStream(); const dataButton = document.getElementById('data-button'); dataButton.onclick = () => { dataStream.write('Hello, World!'); // string dataStream.write({ message: 'Hello, World!' }); // JSON-serializable object dataStream.write(new Uint8Array([0, 1, 2, 3, 4])); // kind of ArrayBuffer }; const room = await SkyWayRoom.FindOrCreate(context, { type: 'p2p', name: 'p2p-room', }); const me = await room.join(); await me.publish(dataStream); let n = 1; room.onStreamPublished.add(async (e) => { const { stream } = await me.subscribe(e.publication.id); if (stream.contentType === 'data') { // stream is RemoteDataStream stream.onData.add((data) => { console.log(`data${n}:`, data); // data1: Hello, World! // data2: { message: 'Hello, World!' } // data3: ArrayBuffer(5) }); } });

P2PRoom.metadata / SfuRoom.metadata での文字列の共有

P2PRoom および SfuRoom は文字列を格納する P2PRoom.metadata / SfuRoom.metadata プロパティを持っています。同じ Room を使用しているアプリケーション間で値が共有されるため、Room 内のすべてのユーザーに文字列を送信するときに使うことができます。

P2PRoom.updateMetadata() / SfuRoom.updateMetadata() で metadata の更新を行うと RoomMetadataUpdatedEvent が発火し、P2PRoom.onMetadataUpdated / SfuRoom.onMetadataUpdated でハンドリングできます。

let msg; await room.updateMetadata('hi everyone!'); await room.onMetadataUpdated.add((e) => { msg = e.metadata; });

使用可能な文字列は 割り当てと制限の「Channel、Member の metadata として使用可能な文字種」 を参照してください。

MeshRoom.getLog() / SFURoom.getLog()

getLog() で取得できるログの仕様は以下の通りです。

ログの形式

プロパティ説明
timestampイベント発生時刻
messageTypeメッセージの種類
messageメッセージ

メッセージの種類

メッセージの種類説明
ROOM_USER_JOINいずれかのユーザーが room に join した際に記録されるログ
ROOM_USER_LEAVEいずれかのユーザーが room から leave した際に記録されるログ
ROOM_DATAいずれかのユーザーが room に send でデータを送信した際に記録されるログ

ROOM_USER_JOIN メッセージのフォーマット

プロパティ説明
roomNameroom 名
roomTyperoom の種類(Mesh | SFU)
srcroom に join した Peer の PeerID

ROOM_USER_LEAVE メッセージのフォーマット

プロパティ説明
roomNameroom 名
srcroom から leave した Peer の PeerID

ROOM_DATA メッセージのフォーマット

プロパティ説明
srcroom に send した Peer の PeerID
dataroom に send で送信したデータ

新 SkyWay では MeshRoom.getLog() / SFURoom.getLog() のようにログを取得する機能を提供していませんが、イベント発火時にログの内容に相当する情報を取得することは可能です。

ROOM_USER_JOIN メッセージの代替手段

ある Member が Room へ join したとき MemberJoinedEvent が発火します。P2PRoom.onMemberJoined / SfuRoom.onMemberJoined に MemberJoinedEvent を引数に取るイベントハンドラーを add することで、MemberJoinedEvent から ROOM_USER_JOIN メッセージ相当の情報を取得できます。

プロパティ代替手段
roomNameMemberJoinedEvent.member.roomName で取得可能
roomTypeMemberJoinedEvent.member.roomType で取得可能
srcMemberJoinedEvent.member.id で Room に join した Member の id を取得可能
room.onMemberJoined.add((memberJoinedEvent) => { console.log(memberJoinedEvent.member.roomName); console.log(memberJoinedEvent.member.roomType); console.log(memberJoinedEvent.member.id); });

ROOM_USER_LEAVE メッセージの代替手段

ある Member が Room から leave したとき MemberLeftEvent が発火します。P2PRoom.onMemberLeft / SfuRoom.onMemberLeft に MemberLeftEvent を引数に取るイベントハンドラーを add することで、MemberLeftEvent から ROOM_USER_LEAVE メッセージ相当の情報を取得できます。

プロパティ代替手段
roomNameMemberLeftEvent.member.roomName で取得可能
srcMemberLeftEvent.member.id で Room から leave した Member の id を取得可能
room.onMemberLeft.add((memberLeftEvent) => { console.log(memberLeftEvent.member.roomName); console.log(memberLeftEvent.member.id); });

ROOM_DATA メッセージの代替手段

MeshRoom.send() / SFURoom.send() での記載の通り、新 SkyWay ではデータの送受信方法として DataChannel を使う方法と Room.metadata を使う方法があります。

src に相当する情報は、DataChannel を使う方法の場合 Member の id を含めたデータを送信することで DataStreamMessageType から取得できます。 同様に、Room.metadata を使う方法の場合 Room.metadata に Member の id を含めて update することで、RoomMetadataUpdatedEvent から取得できます。

プロパティ代替手段
srcRoom.updateMetadata() または LocalDataStream.write() で Member の id を送信することで RoomMetadataUpdatedEvent または DataStreamMessageType で取得可能
dataRoomMetadataUpdatedEvent または DataStreamMessageType で取得可能

管理 API

旧 SkyWay

Enterprise Edition ユーザーの方はご利用情報を API リクエストでご確認いただけます。

詳細はこちらをご参照ください。

新 SkyWay

新 SkyWay では API リクエストではご利用情報は取得できません。

ご利用状況は SkyWay コンソールにログインいただくことで、「ご利用状況」画面よりご確認いただけます。

対応コーデック

旧 SkyWay と新 SkyWay で対応コーデックを変更しています。

対応コーデックの主な違い

  • 凡例
    • ○: 指定可能
      • *1: リリース時のみ動作検証
      • *2: DTX オプションあり
      • *3: サイマルキャスト対応
    • ×: 指定不可
  • *1の有無(指定可能コーデックとサポートコーデック)の違いについては、新 SkyWay の共通仕様 - 対応コーデック - 分類をご参照ください
  • *2の DTX オプションは、非発話区間における帯域を削減するオプションです
  • Opus/RED は、パケロス耐性を向上したコーデックで、パケロスの多い環境での通話品質向上に効果的です

新/旧 SkyWay の対応コーデックについて詳しくは、以下をご参照ください。