我正在使用带有 easyrtc 的 socket.io 进行 p2p 视频聊天。https://github.com/merictaze/enlargify的工作示例,带有以下软件包版本
"express": "^4.15.2",
"easyrtc": "1.0.x", // easyrtc@1.0.15
"socket.io": "^1.4.5"
使用的 easyrtc 逻辑位于https://github.com/merictaze/enlargify/blob/master/public/resources/js/app.js
但是,如果我将 easyrtc 版本升级到 1.1,代码将停止工作。我什至尝试过 beta 分支。
"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/
由于 beta 分支中的 safari 支持,我想更新 easyrtc 版本。我发现演示工作顺利。
附言。我确实更新了 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 与服务器端生成的不同。这就是为什么两个对等方无法连接的原因。
知道如何获得easyrtc.connect的成功功能以返回正确的socketID吗?