随时间推移,socket.io在台式机Chrome和台式机Firefox上会失败

时间:2019-06-27 21:04:16

标签: node.js express websocket socket.io

当前行为

我们无法可靠地重现此内容,但这是对服务器设置和问题的描述。

我们正在Node.JS / Express服务器上运行socket.io 2.2.0。

大约12个小时后,我们的服务器对台式机Chrome和Firefox上的客户端发出的排放无响应。它继续在Edge,Safari和移动版Chrome / Safari上运行。

例如:

服务器:

io.on('connection', (socket) => {
    socket.on(‘test’, (data) => {
       console.log(“This is a test”)
    })
})

客户:

this.socket.emit(‘test’)

在此示例中,我们看到了服务器正常运行的前12个小时左右的预期行为。客户发出后,就会立即触发“这是一个测试”。

此后,也许由于服务器上的负载逐渐增加(尽管我们通常一次最多连接不超过20个客户端),服务器停止监听客户端。尽管已验证客户端发出了“测试”,但服务器从未记录“这是测试”。同样,这仅发生在台式机Chrome和台式机Firefox上。

这似乎很奇怪,因为如果服务器超载-当客户端数量减少时它应该可以恢复。此外,为什么超负荷突然会永久禁用Chrome和Firefox向我们的服务器发送排放的功能?我们知道通过查看网络日志可以从客户端建立websocket连接。我们还看到该连接正在发送ping,但从未收到来自服务器的pong。

预期的行为

Chrome和Firefox套接字继续正常运行。

设置

  • 操作系统:Ubuntu 18.04
  • 浏览器:台式机Chrome,台式机Firefox
  • socket.io版本:2.2.0

0 个答案:

没有答案