为什么 socket.io 客户端发出会触发自己的侦听器.即使服务器处于脱机状态



多年后,我在使用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系统中挂钩。(至少我认为是这样(

最新更新