2017-12-23 6 views
0

easyrtcでsocket.ioを使用して、P2Pビデオチャットを行っています。例の作業は、次のパッケージバージョンとhttps://github.com/merictaze/enlargifyバージョン(EasyRTC)を更新した後、クライアントのソケットIOソケットIDが異なる

"express": "^4.15.2", 
"easyrtc": "1.0.x", // [email protected] 
"socket.io": "^1.4.5" 

で使用easyrtcロジックは、私が1.1にeasyrtcバージョンをつり上げる場合のコードは動作を停止し、しかしhttps://github.com/merictaze/enlargify/blob/master/public/resources/js/app.js

です。私はベータブランチを試みました。

"express": "^4.15.2", 
"easyrtc": "priologic/easyrtc#beta", 
"socket.io": "^1.4.5" 

私はさらに調査に私はそれがこの呼び出しで失敗したことがわかったので、これは、あまり役立っていない知っている

easyrtc.call(self.partnerId, successCB, failureCB, acceptedCB); 

failureCBからのエラーコードは

MSG_REJECT_TARGET_EASYRTCID

です

サーバー側ではログには

2017-12-07T07:02:40.477Z - debug - EasyRTC: [enlargify_app][fNhseVCWzi8XXhn5] EasyRTC command received with msgType [offer] undefined 
2017-12-07T07:02:40.478Z - warning - EasyRTC: Attempt to request non-existent connection key: '0xv7UpIAlVeAzEedAAAA' undefined 
2017-12-07T07:02:40.479Z - warning - EasyRTC: [enlargify_app][fNhseVCWzi8XXhn5] Could not send WebRTC signal to client [0xv7UpIAlVeAzEedAAAA]. They may no longer be online. undefined 

それはデモで同じようしかし、バックpackage.jsonでeasyrtcバージョンを元に戻すことは、ここで働くhttp://enlargify.herokuapp.com/

ため、私はベータ版ブランチのサファリのサポートのeasyrtcバージョンを更新したいと思います。私はデモがスムーズに動作していることを発見しました。

ps。私は、更新にsocket.ioバージョンを行なったし、非推奨の呼び出しを更新例えば

partnerSocket = io.sockets.socket(socket.partnerId); 
partnerSocket.emit("disconnect_partner", socket.id); 

io.to(socket.partnerId).emit("disconnect_partner", socket.id); 

へのさらなる調査は、クライアント側で生成socket.idは、サーバー上のものとは異なることを示しています。それで、2人の同輩が接続できない理由です。

どのように私は成功の機能を得ることができるeasyrtc.connect正しいsocketIDを返すために?

答えて

0

ここに自分の質問に答えると、他の人がこれに遭遇した場合、私のように時間を無駄にすることはありません。

クライアントとサーバーのIDの違いは、[email protected]より前のバージョンでは、easyrtcがSocketIOのIDに依存してEASYRTCIDとして使用していたためです。つまり、socket.idとeasyrtcidの両方を同じ意味で参照できます。それが古いバージョンで動作した理由です。

https://github.com/priologic/easyrtc/issues/185で説明したように、彼らは機能を変更し、新しいパターンに基づいてEASYRTCIDを作成しました。シグナリングサーバ(socketIO)はsocket.idに送信するので、easyrtcはコールを開始するときにeasyrtcidを使用します。したがって、easryrtc呼び出しを行うために、ソケットを介してピア間でeasyrtcidsを渡すためにビジネスロジックが必要です。

上記に加えて、easyrtcオブジェクトにシグナリングサーバのソケットインスタンスを使用するように伝える必要があります。私はこの例に従った。https://demo.easyrtc.com/demos/demo_instant_messaging_selfconnect.html

関連する問題