Socket.io客户端.on无响应但服务器已接收emit事件问题
问题原因及解决方案
核心问题是:你的服务端仅接收了客户端发送的test事件,但没有向客户端回传该事件,客户端的sio.on('test')监听的是服务端主动推送的test事件,自然不会触发。
具体修改方案
在服务端的test事件处理函数中,添加向客户端发送事件的逻辑,有两种常用方式:
1. 仅回发给当前触发事件的客户端
修改服务端代码中socket.on('test')的部分:
socket.on('test', function(data){ console.log('received'); console.log(data); // 回发给当前连接的客户端 socket.emit('test', data); });
2. 广播给所有连接的客户端
如果需要让所有在线客户端都收到这个事件,改用io.emit:
socket.on('test', function(data){ console.log('received'); console.log(data); // 广播给所有连接的客户端 io.emit('test', data); });
修改后效果
修改完成后,客户端在3秒后发送test事件,服务端接收后回传,客户端的sio.on('test')就会触发,控制台会输出:
test messaged initialized client received { test: 'test' }
内容的提问来源于stack exchange,提问作者helmetwearer
相关产品推荐
相关产品推荐

