如何知道websocket客户端意外关闭的原因?

时间:2017-07-12 23:58:34

标签: javascript node.js websocket

我有一个使用ws模块的浏览器游戏。但有时远程计算机上的客户端会在玩游戏一段时间时因未知原因关闭连接。连接关闭时屏幕会冻结。我没有在本地服务器计算机上测试它时遇到此问题。

我的服务器上有这个ws列表器:

const WSServer = WebSocket.Server;
const server = require('http').createServer(app);

let wss = new WSServer({
    server,
});
wss.on('connection', function(ws, req) {
    const ip = req.connection.remoteAddress;
    console.log(ip + ' connected');

  if (ws.readyState === WebSocket.OPEN) {
     const id = req.headers['sec-websocket-key'];

     gameServer.socketActions(ip, ws, wss.clients);
  }

  ws.on('error', function(err) {
      logger.debug('Found error: ' + err);
  });

  ws.on('close', function() {
      logger.debug(ip + ' disconnected.');
  });

});

因此,当客户端连接意外关闭时,它只是告诉我一些ip断开连接。

1 个答案:

答案 0 :(得分:0)

  

但有时远程计算机上的客户端会在玩游戏一段时间后因未知原因关闭连接。

欢迎来到互联网™,这是一个臭名昭着的恶劣环境,任何可能出错的地方都会。

说真的,人们一直用反铲挖土机切割纤维。有时洪水导致停电。其他时候,某人的笔记本电脑电池已经死亡。许多人使用某种或那种受到各种干扰的无线接入......按设计!你永远不会真正知道为什么会这样。最终,一堆数据包丢失,超出一些阈值,问题在各层中发挥作用。

正确构建的应用程序将优雅地处理此问题。如果需要,您可以尝试重新连接。