socket.io-p2p官方例程无法正常工作

问题简述

最近打算尝试socket.io-p2p,结果一上来就发现官方的例子在本地就无法完成P2P连接。

详细描述

在官方的例子中,两个客户端先通过服务器广播了各自的消息(这一步我在本地可以跑通)。随后由其中一个客户决定转为P2P连接,服务器协调完成,P2P连接建立后两个客户端不经服务器直接通信。而我本地运行时,客户端代码中的如下构造函数中的回调函数没有被调用,Go private按钮一直被禁用:

var p2psocket = new Socketiop2p(socket, opts, function () {
  privateButton.disabled = false
  p2psocket.emit('peer-obj', 'Hello there. I am ' + p2psocket.peerId)
})

尝试过的解决方法

方法1

强制启用Go private按钮。在客户端1处点击Go private后,客户端2无反应(服务器没有收到客户端1发出的go-private事件),且之后服务器及客户端2都收不到客户端1发送的消息,而客户端2发送的消息仍通过服务器送达了客户端1。

方法2

强制启用Go private按钮,并将客户端代码的第63行改为socket.emit('go-private', true),以保证服务器能够收到并转发go-private事件。在客户端1处点击Go private后,客户端2有反应(服务器收到并转发了客户端1发出的go-private事件),但之后两个客户端的消息无法互达。

方法3

基于方法2,对调客户端代码的第62行第63行。结果与方法2一致。

阅读 1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题