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

时间:2019-06-20 14:53:37

标签: javascript websocket socket.io

使用套接字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
});

现在,当我在客户端使用相同的代码并发出“用户”请求时,将立即使用应该发送到服务器的请求有效负载触发socket.on('user')回调。离线)。

我认为socket.on()侦听器仅由服务器的响应触发,而不是由客户端本身的传出消息触发。

socket.io是否应该像这样工作,还是我在配置中缺少某些内容?

1 个答案:

答案 0 :(得分:0)

我想通过不小心绊倒另一篇有关socket.io如何保持连接存活的帖子来解决了这个问题。

socket.emit('user',{userId:2});是一个例子。 在我的真实应用程序中,我使用了事件名称“ ping”,它似乎是由socket.io保留的。 客户端不断ping并不断听ping。

因此,当我添加自己的socket.on('ping')侦听器时,它已挂接到socket.io内部ping / pong系统中。 (至少我认为是这样)