多年后,我在使用socket io时遇到了一个奇怪的问题。几年前,我可以在客户端使用以下代码
socket.emit('user', {userId: 2});
// and somewhere else in the code id listen for incoming 'user' replies
socket.on('user',(reply) => {
// do something with user data received from server
});
现在,当我在客户端有相同的代码,并且我发出"user"请求时,socket.on('user'(回调会立即触发,请求有效负载应该进入服务器(离线(。
我认为socket.on((侦听器仅由来自服务器的回复触发,而不是由来自客户端本身的传出消息触发。
socket.io 应该像这样工作还是我在配置中缺少某些内容?
我想我通过偶然发现另一篇关于 socket.io 如何保持连接活跃的帖子解决了这个问题。
socket.emit('user', {userId: 2}(; 就是一个例子。在我的真实应用程序中,我使用了事件名称"ping",它似乎是 socket.io 保留的。客户端不断执行 ping 操作并不断侦听 ping。
因此,当我添加自己的socket.on('ping'(侦听器时,它 socket.io 内部ping/pong系统中挂钩。(至少我认为是这样(