API の違い
認証・認可の違い
新 SkyWay では認証・認可の方法が変わります。
旧 SkyWay では認証のみ提供していましたが、新 SkyWay では新たに認可も行うことができるようになりました。
旧 SkyWay
ドメインによる認証または Peer による認証を行います。
ドメインによる認証方法についてはダッシュボードの操作方法をご参照ください。
Peer の認証方法については認証サンプルをご参照ください。
新 SkyWay
トークンベースの認証・認可機能を提供しています。
詳しい認証・認可の方法はユーザーガイドをご参照ください。
旧 SkyWay の API について
旧 SkyWay で一部提供しなくなった API について新 SkyWay での代替手段を記載します。
Peer.listAllPeers()
- API リファレンス: Peer.listAllPeers()
旧 SkyWay の Peer は新 SkyWay の Member にあたります。Room に参加している Member 一覧は、P2PRoom.members プロパティ または SfuRoom.members プロパティ で取得できます。
Peer.fetchPeerExists()
- API リファレンス: Peer.fetchPeerExists()
P2PRoom.members プロパティ または SfuRoom.members プロパティ から Room に参加している Member 一覧を取得し、Member.id でフィルタリングすることで特定の Member が Room に存在するかを確認できます。
MeshRoom.send() / SFURoom.send()
- API リファレンス
新 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()
- API リファレンス
getLog() で取得できるログの仕様は以下の通りです。
ログの形式
プロパティ | 説明 |
---|---|
timestamp | イベント発生時刻 |
messageType | メッセージの種類 |
message | メッセージ |
メッセージの種類
メッセージの種類 | 説明 |
---|---|
ROOM_USER_JOIN | いずれかのユーザーが room に join した際に記録されるログ |
ROOM_USER_LEAVE | いずれかのユーザーが room から leave した際に記録されるログ |
ROOM_DATA | いずれかのユーザーが room に send でデータを送信した際に記録されるログ |
ROOM_USER_JOIN メッセージのフォーマット
プロパティ | 説明 |
---|---|
roomName | room 名 |
roomType | room の種類(Mesh | SFU) |
src | room に join した Peer の PeerID |
ROOM_USER_LEAVE メッセージのフォーマット
プロパティ | 説明 |
---|---|
roomName | room 名 |
src | room から leave した Peer の PeerID |
ROOM_DATA メッセージのフォーマット
プロパティ | 説明 |
---|---|
src | room に send した Peer の PeerID |
data | room に send で送信したデータ |
新 SkyWay では MeshRoom.getLog() / SFURoom.getLog() のようにログを取得する機能を提供していませんが、イベント発火時にログの内容に相当する情報を取得することは可能です。
ROOM_USER_JOIN メッセージの代替手段
ある Member が Room へ join したとき MemberJoinedEvent が発火します。P2PRoom.onMemberJoined / SfuRoom.onMemberJoined に MemberJoinedEvent を引数に取るイベントハンドラーを add することで、MemberJoinedEvent から ROOM_USER_JOIN メッセージ相当の情報を取得できます。
プロパティ | 代替手段 |
---|---|
roomName | MemberJoinedEvent.member.roomName で取得可能 |
roomType | MemberJoinedEvent.member.roomType で取得可能 |
src | MemberJoinedEvent.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 メッセージ相当の情報を取得できます。
プロパティ | 代替手段 |
---|---|
roomName | MemberLeftEvent.member.roomName で取得可能 |
src | MemberLeftEvent.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 から取得できます。
プロパティ | 代替手段 |
---|---|
src | Room.updateMetadata() または LocalDataStream.write() で Member の id を送信することで RoomMetadataUpdatedEvent または DataStreamMessageType で取得可能 |
data | RoomMetadataUpdatedEvent または DataStreamMessageType で取得可能 |
管理 API
旧 SkyWay
Enterprise Edition ユーザーの方はご利用情報を API リクエストでご確認いただけます。
詳細はこちらをご参照ください。
新 SkyWay
新 SkyWay では API リクエストではご利用情報は取得できません。
ご利用状況は SkyWay コンソールにログインいただくことで、「ご利用状況」画面よりご確認いただけます。
対応コーデック
旧 SkyWay と新 SkyWay で対応コーデックを変更しています。
- 凡例
- ○: 指定可能
- *1: リリース時のみ動作検証
- *2: DTX オプションあり
- *3: サイマルキャスト対応
- ×: 指定不可
- ○: 指定可能
- *1の有無(指定可能コーデックとサポートコーデック)の違いについては、新 SkyWay の共通仕様 - 対応コーデック - 分類をご参照ください
- *2の DTX オプションは、非発話区間における帯域を削減するオプションです
- Opus/RED は、パケロス耐性を向上したコーデックで、パケロスの多い環境での通話品質向上に効果的です
新/旧 SkyWay の対応コーデックについて詳しくは、以下をご参照ください。
- 旧 SkyWay の対応コーデック:
- JavaScript SDK: Peer クラスの call メソッドの call options object
- iOS SDK: SKWCallOption クラス
- Android SDK: io.skyway.Peer.CallOption クラス
- 新 SkyWay の対応コーデック