7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SkyWayのシグナリングサーバーだけを使用する

Last updated at Posted at 2018-05-09

SkyWayは、シグナリングサーバーもサービス内で提供していますが、SDKにおいてはほぼ隠蔽されており、WebRTCを使用する分には気にする必要がありませんが、このシグナリングサーバーのみを使用したいとなった場合、どうすればいいか。

SkyWayのSDK(クライアント)はPeerJSがベースとなっており、WebSocketのライブラリにSocket.IOが使用されています。
Peerインスタンスのopenイベントは、シグナリングサーバーに接続が完了したイベントですので、openイベント後にSocket.IOのインスタンスを取得することができればいいわけです。
(SkyWay SDK内部においては、いったんdispatcherUrlにリクエストを投げ、レスポンスからシグナリングサーバーのURLを取得してから、シグナリングサーバーに接続しています。)

const peer = new Peer({key:'---'});
peer.on('open', id => {
    const socket = peer.socket._io; // peer.socket._ioがSocket.IOインスタンス
});

シグナリング(WebSocket)サーバー側もPeerJSのサーバーをベースにしています。
PeerJSのサーバーは、特定のイベント名のメッセージ以外ははじく仕様となっています。
イベント名とは、Socket.IOのemit()で第1引数に指定する値のことです。
SkyWayでクライアントからサーバーにメッセージを送信するときに使用されているイベント名

イベント名
'SEND_OFFER'
'SEND_ANSWER'
'SEND_CANDIDATE'
'SEND_LEAVE'
'ROOM_JOIN'
'ROOM_LEAVE'
'ROOM_GET_LOGS'
'ROOM_GET_USERS'
'ROOM_SEND_DATA'
'SFU_GET_OFFER'
'SFU_ANSWER'
'SFU_CANDIDATE'
'PING'
'UPDATE_CREDENTIAL'

これら以外のイベント名でメッセージをクライアントから送信すると、サーバー側ではじかれます。
'SEND_'から始まらないイベント名は、サーバー側で処理されるメッセージですので、使用できません。
クライアントから別のクライアントにメッセージを送信するには、'SEND_'から始まるイベント名、
'SEND_OFFER'
'SEND_ANSWER'
'SEND_CANDIDATE'
'SEND_LEAVE'
のいずれかを使用します。
ただし、サーバーから別のクライアントへメッセージが送信されるときは、'SEND_'がないイベント名で送信されます。
また、特定の別クライアントにメッセージを送信したい場合は、送信データにdstプロパティを追加し値にpeerIdを設定することで、そのpeerIdへメッセージが送信されます。
ちなみに、srcプロパティで送信元のpeerIdを設定することができます。

_io.emit('SEND_OFFER', {
    data: {},
    dst: destPeerId,
    src: sourcePeerId
});

|
V

<< Signaling Server >>

|
V

_io.on('OFFER', data => {
    //...
});

これにより、シグナリングサーバー経由で独自のメッセージの送受信が行えます。
call(MediaConnection)やconnection(DataConnection)を生成した場合、内部でシグナリングメッセージハンドラーが生成されるため、独自のメッセージを送受信する場合は、そのハンドラーを回避する必要があります。回避できなくはないですが、SDK内部を修正する必要があるため面倒になります。
ですので、シグナリングのみを使用するだけでしたら面倒なことは避けられますので、生のWebRTCの動作確認の用途等で使用することができます。
もちろん、独自のメッセージをシグナリングサーバー経由で送受信する方法は公式に公表されていませんので、使用には十分注意してください。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?