Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io';消息';事件激发,但单个侦听器不';不要开枪。在iframe中注册的侦听器_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript Socket.io';消息';事件激发,但单个侦听器不';不要开枪。在iframe中注册的侦听器

Javascript Socket.io';消息';事件激发,但单个侦听器不';不要开枪。在iframe中注册的侦听器,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我有一个主页,里面有一个iframe。 主页使用socket.io连接到my Node.JS服务器。 套接字存储在窗口中。socket。 然后,在iframe中,我使用parent.window.socket访问套接字。 在iframe中运行console.log(parent.window.socket)表明它是有效的 在iframe中,我有一些东西。 首先,为事件A注册处理程序。 它有一个清晰的输出(console.log),因此输出代码不是坏的。 我还有socket.on('message

我有一个主页,里面有一个iframe。 主页使用socket.io连接到my Node.JS服务器。 套接字存储在
窗口中。socket
。 然后,在iframe中,我使用
parent.window.socket
访问套接字。 在iframe中运行
console.log(parent.window.socket)
表明它是有效的

在iframe中,我有一些东西。 首先,为事件
A
注册处理程序。 它有一个清晰的输出(console.log),因此输出代码不是坏的。 我还有
socket.on('message')
来捕获所有消息。 最后,我有一些emit向服务器发送消息

我已确认服务器正在连接和接收消息,因为来自my emits和connect/disconnect事件的事件会触发。 但是,当服务器发回一条消息作为响应时,事件不会触发。 在('message')上的
socket.on('message')中,我很好地接收到消息,带有正确的数据和参数,但是我的事件('A')
)socket.on('A')没有触发

我查过:

  • 我在iframe代码中使用了正确的WebSocket对象
  • iframe和“查看器”页面是来自同一域和服务器的服务器(不是跨源问题)
  • 消息在两端接收,但服务器未启动自定义处理程序
  • 控制台中没有错误
  • 我已经尝试使用firefox调试器逐步完成代码,并且发送的变量和数据都是正确的

编辑:也在父页面中测试了它-相同的行为。它在
socket.on('message')
中接收消息,但是
socket.on('A')
没有被激发。

解决了这个问题。在客户端和服务器上混合使用了socket.send()和socket.emit(),但根据,send仅激发“message”事件,“emit”激发自定义事件。使用iframes与此无关。

socket.on('A')在父页面中起作用吗?@johnley在父页面中测试了它-同样的行为。它在socket.on('message')中接收消息,但在
socket.on('A')
中未激发消息。有示例代码吗?