首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新版本后客户端上不同的套接字IO套接字IO (EasyRTC)

更新版本后客户端上不同的套接字IO套接字IO (EasyRTC)
EN

Stack Overflow用户
提问于 2017-12-23 03:16:14
回答 1查看 367关注 0票数 0

我使用socket.io和easyrtc进行p2p视频聊天。在https://github.com/merictaze/enlargify上使用以下包版本的示例

代码语言:javascript
运行
复制
"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,代码就会停止工作。我甚至试过贝塔分支。

代码语言:javascript
运行
复制
"express": "^4.15.2",
"easyrtc": "priologic/easyrtc#beta",
"socket.io": "^1.4.5"

我知道这没有多大帮助,所以在进一步的调查中,我发现这个电话失败了

代码语言:javascript
运行
复制
easyrtc.call(self.partnerId, successCB, failureCB, acceptedCB);

来自failureCB的错误代码是

MSG_REJECT_TARGET_EASYRTCID

在服务器端,日志显示

代码语言:javascript
运行
复制
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版本,因为beta分支支持safari。我发现演示工作很顺利。

ps。我确实更新了socket.io版本,并更新了不推荐的调用,例如

代码语言:javascript
运行
复制
 partnerSocket = io.sockets.socket(socket.partnerId);
 partnerSocket.emit("disconnect_partner", socket.id);

代码语言:javascript
运行
复制
io.to(socket.partnerId).emit("disconnect_partner", socket.id);

进一步的研究表明,在客户端生成的socket.id与服务器上的不同。这就是为什么两个对等点无法连接的原因。

知道如何获得easyrtc.connect的成功函数来返回正确的socketID吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-25 13:43:30

在这里回答我自己的问题,所以如果别人发现了这个问题,他们不会像我那样浪费时间。

客户机和服务器上ID差异的原因是,在easyrtc@1.0.15版本之前,easyrtc依赖SocketIO的ID并将其用作EASYRTCID。这意味着可以互换地引用socket.id和easyrtcid。这就是为什么它在旧版本中有效的原因。

正如在https://github.com/priologic/easyrtc/issues/185上解释的那样,他们改变了功能,并基于新的模式制作了EASYRTCID。因为信令服务器(socketIO)将发出到socket.id,而easyrtc在发起调用时将使用easyrtcid。因此,需要业务逻辑通过套接字在对等点之间传递easyrtcid,以便进行easryrtc调用。

此外,我们还需要告诉easyrtc对象使用信令服务器的套接字实例。我遵循了这个例子,selfconnect.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47949449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档