Node.js-Socket.io一遍又一遍地重复'io.on('connection')

时间:2020-04-04 15:36:38

标签: javascript node.js socket.io

因此,我仍处于Socket.io的试验阶段,但是我无法弄清楚为什么我的代码会这样做。所以,我有下面的代码,当我console.log代码时,即使只有一个连接,它也会重复连接。你知道解决方案吗?

io.on('connnection', (socket) => {
    console.log("A new user is connected.")
})

客户端:

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io()
</script>

Node.js控制台:

A new user is connected.
A new user is connected.
A new user is connected.
A new user is connected.
A new user is connected.
A new user is connected.
A new user is connected.
...

(注意:只有一个连接,并且我已经清除了浏览器的现金)

1 个答案:

答案 0 :(得分:1)

这是socket.io反复连接的一些可能原因:

  1. 您的socket.io客户端和服务器版本不匹配,这会导致连接失败并立即重试。

  2. 您正在使用某些基础架构(例如代理或负载平衡器)运行,而这些基础架构的配置不正确,无法允许持久的webSocket连接。

  3. 您正在运行没有粘性WebSocket连接的群集服务器。

  4. 您已将服务器端io.on('connnection', ...)代码放在其他函数中,该函数被多次调用,导致您为同一事件注册多个事件处理程序,因此您认为自己会收到多个事件,但实际上,您只有一个事件的多个侦听器。

  5. 您的客户代码多次调用其var socket = io()

  6. 由于表单发布或其他原因,您的客户端页面正在重新加载(并因此在每次重新加载时重新启动连接)。

仅供参考,有时您可以通过在客户端和服务器连接上安装所有可能与错误相关的事件的侦听器,然后记录发生哪些事件以及它们提供的任何参数的有用信息。您可以看到所有与客户端相关的错误事件,可以监听并记录here