[Q&A]APIでPeerID以外の情報を用いて相手を特定することができるか

1,216 views
Skip to first unread message

R.naka

unread,
Apr 6, 2016, 7:12:54 AM4/6/16
to SkyWay Technical Forum
お世話になっております。
度々申し訳ありませんが、ご質問させていただきます。

ビデオチャットアプリでSkyWayを使って開発するにあたり、
Peerから取得できるPeerIDを使って同一APIを保持する相手を特定し、通信する形だと思うのですが、
PeerIDがPeerに接続するたびに変動してしまうため、別の手段でIDを伝達しなければなりません。
いわばLINEやSkypeのように、リモートの相手をPeerID以外の手段で特定・チャット開始したり、
あるいはアプリケーションに接続しているかどうか(接続ステータス)を送話元に反映させるなどのことが、
SkyWayのAPIで実現できるのでしょうか?
ドキュメントには相手ステータスの取得について、記載されていなかったようでしたので、質問させていただきました。
もし、またしてもこちらの見落としであれば大変申し訳ないのですが、
ご教授いただければ幸いです。何卒、よろしくお願い致します。

iwase.yoshimasa

unread,
Apr 6, 2016, 4:34:32 PM4/6/16
to SkyWay Technical Forum
SkyWay開発チームの岩瀬です。

> PeerIDがPeerに接続するたびに変動してしまうため、別の手段でIDを伝達しなければなりません。

Peer作成時の引数にIDを指定する方法もございます。(この場合、PeerIDを指定できます)


> いわばLINEやSkypeのように、リモートの相手をPeerID以外の手段で特定・チャット開始したり、
> あるいはアプリケーションに接続しているかどうか(接続ステータス)を送話元に反映させるなどのことが、

1案になりますがR.naka様にて別のサーバ等を用意していただき
 ・[あるID] -> [PeerID, SkyWayへの接続ステータス]
を管理する案がございます。(あるIDというのが、Lineなどが払い出す独自のIDというイメージです)

> SkyWayのAPIで実現できるのでしょうか?
SkyWayでは、listAllPeers() を利用して該当のPeerIDが、
SkyWayに接続しているかどうかは確認できますが、それ以上の機能を備えていないため、
SkyWay単独で実現するのは難しいと考えております。

R.naka

unread,
Apr 6, 2016, 9:37:37 PM4/6/16
to SkyWay Technical Forum
岩瀬様

ご回答読ませていただきました。丁寧にご説明いただきありがとうございます。

Peer作成時に任意の文字列を指定することでIDは固定することができるのですね。
その際、おそらく重複はNGだと思いますが、他、文字数や使用文字など何か制限はありますでしょうか?

>1案になりますがR.naka様にて別のサーバ等を用意していただき
 ・[あるID] -> [PeerID, SkyWayへの接続ステータス]
を管理する案がございます。

このご説明につきまして、イメージとしては、
・アプリ上で登録したときにPeerを作成し、
あるID(ユーザーIDとする)に作成したPeerIDと接続ステータスをDBに格納する
・発信時、相手IDに紐づいているPeerIDと接続ステータスをDBから取得し、
ステータスがtrueであればPeerIDを使ってCallを実行

というイメージでしょうか?
また、SkyWay接続ステータスを取得する際には、どちらのAPIから見ればよいでしょうか?

再三お手数をおかけし恐縮ですが、よろしくお願いいたします。

2016年4月7日木曜日 5時34分32秒 UTC+9 iwase.yoshimasa:

iwase.yoshimasa

unread,
Apr 7, 2016, 8:33:59 PM4/7/16
to SkyWay Technical Forum
SkyWay開発チームの岩瀬です。

> その際、おそらく重複はNGだと思いますが、他、文字数や使用文字など何か制限はありますでしょうか?

半角英数字をご利用ください。文字数は16文字程度までであれば、特に問題はございません。
SkyWayで利用しているシグナリングサーバは以下のPeerJS Server互換のAPIを保持しております。(SkyWayのサーバ側のコードは開示していません)
上記の制限は以下のコードを参照しています:


> ・アプリ上で登録したときにPeerを作成し、
> あるID(ユーザーIDとする)に作成したPeerIDと接続ステータスをDBに格納する
> ・発信時、相手IDに紐づいているPeerIDと接続ステータスをDBから取得し、
> ステータスがtrueであればPeerIDを使ってCallを実行

ご認識の通りです。

> また、SkyWay接続ステータスを取得する際には、どちらのAPIから見ればよいでしょうか?

にある、以下の部分から、SkyWayに接続している特定のAPIに紐づく全てのPeerIDを取得できます。
接続していない場合は表示されません。

listAllPeers()
APIキー毎のアクティブなPeerIDを取得します。 
peer.listAllPeers(function(list){
      //(例)取得したPeerIDリストを配列に格納する
    for(var cnt = 0;cnt < list.length;cnt++){
        userList.push(list[cnt]);
    }
});

以上、よろしくお願いいたします。

R.naka

unread,
Apr 7, 2016, 11:31:07 PM4/7/16
to SkyWay Technical Forum
なるほど、通信ステータスに関しては、欲しいIDに紐付いたPeerIDが取得できたかどうかで切り分けを行うということですね。
大変参考になりました。ご教授いただきありがとうございました。


2016年4月8日金曜日 9時33分59秒 UTC+9 iwase.yoshimasa:
Reply all
Reply to author
Forward
0 new messages