Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript My Node.js WebSocketServer最终终止_Javascript_Node.js_Websocket_Forever - Fatal编程技术网

Javascript My Node.js WebSocketServer最终终止

Javascript My Node.js WebSocketServer最终终止,javascript,node.js,websocket,forever,Javascript,Node.js,Websocket,Forever,我已经在Node.js中使用ws-lib编写了一个小的WebSocketServer。到目前为止它还可以工作,但过了一段时间服务器就无法访问了。那我得跑了 $ node index.js 再次让它重新上线 这是我的代码: var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: 8888, path: '/login'}); var userList = [ { "nick": "fo

我已经在Node.js中使用ws-lib编写了一个小的WebSocketServer。到目前为止它还可以工作,但过了一段时间服务器就无法访问了。那我得跑了

$ node index.js
再次让它重新上线

这是我的代码:

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port: 8888, path: '/login'});

var userList = [
  { "nick": "foo" },
  { "nick": "bar" },
  { "nick": "baz" }
];

wss.on('connection', function connection(ws) {
  console.log('client connected');
  ws.on('message', function incoming(message) {
    console.log('received %s', message);

    var found = false;
    userList.forEach(function(e) {
      if(e.nickname == message) {
        ws.send(JSON.stringify(e));
        found = true;
      }
    });

    if(!found) {
      ws.send('not found');
    }
  });

  ws.on('close', function() {
    console.log('connection closed');
  });
});
这种行为是故意的吗?我的第一个想法是,这段代码只能处理一个实例,但我尝试了多个连接,没有任何问题


现在,我正在运行带有“forever”的文件,但我想知道这是否真的是必要的。

有一段超时时间,在此之后连接将丢失。您需要在一定的时间间隔内不断发送数据包,以保持连接的有效性。数据包可以是空的。

服务器本身不需要通过ping“保持活动”。听起来您遇到了导致崩溃的致命错误。我建议添加一些错误处理来检测未处理的错误。@BrandonSmith您确定吗?Mykybo写了一些关于超时的东西。但是你是对的,我应该添加一些错误处理。你需要用客户端连接保持“连接活动”。服务器本身应该在没有交互的情况下无限期运行。所以我想我的永久解决方案是一个不错的解决方案。否则,我可以在服务器上创建ping客户端。如果与服务器没有通信,客户端连接(即用户、浏览器等)将超时。你必须通过发送消息来保持这种状态。您的服务器不应该超时,并且应该在没有任何交互的情况下保持独立运行。如果没有客户端,服务器将不关心。它将无限期地运行,等待连接。其他原因导致您的服务器崩溃。是否有文档记录?我什么也没找到。这是Node.js还是ws-lib行为?所以我的“永远”解决方案可能是一个好的解决方案。这样我就可以管理我的服务器实例了。为什么您认为会出现超时和套接字关闭的情况?请指出一些证明这一点的参考资料?