我的 Node.js WebSocketServer 最终终止
My Node.js WebSocketServer terminates eventually
我已经使用 ws 库在 Node.js 中编写了一个小型 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" 创建文件,但我想知道这是否真的有必要。
连接断开后有一个超时时间。您需要在某个时间间隔内继续发送数据包以保持连接有效。数据包可以为空。
我已经使用 ws 库在 Node.js 中编写了一个小型 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" 创建文件,但我想知道这是否真的有必要。
连接断开后有一个超时时间。您需要在某个时间间隔内继续发送数据包以保持连接有效。数据包可以为空。