Node.js WebSockets' hiccups'和冻结

时间:2015-08-22 20:42:56

标签: node.js websocket

我有一个使用WebSockets的Node.js服务器用于我的游戏。除了一件事,一切都很好。随着更多的玩家,游戏开始冻结。看起来好像数据包停止了,收集然后立即收到所有数据包。

导致这种情况的原因是什么?如何阻止这种情况发生?非常感谢任何帮助!!

编辑:此外,它并不是一直发生的,也不是经常发生的。我认为只有当球员投篮时才会发生。

this.wss.on('connection', function connection(ws) {
    if (!originIsAllowed(ws.upgradeReq.headers.origin)) {
        // Make sure we only accept requests from an allowed origin
        //ws.terminate();
        console.log(new Date() + 'Connection from origin ' + ws.upgradeReq.headers.origin + ' rejected.');
        return;
    }else {
        console.log(new Date() + "New connection from " + ws._socket.remoteAddress);
        self.emit('connect', new SocketIOClient(ws));
    }
});

SocketIOClient:

WebSocketsClient.prototype.send = function(data) {
  if(this.socket.readyState == 1) {
    this.socket.send(data);
  }
};

//Inside constructor
var self = this;
this.socket.onmessage = function incoming(event) {
    self.emit('message', event.data);
}

this.socket.onerror = function () {
    self.emit('error');
    self.socket.terminate();
};

this.socket.onclose = function() {
    self.emit('disconnect');
    self.socket.terminate();
};

另一个编辑: 我有WireShark,但我真的不知道如何从中获取有用的信息。我有一个运行游戏的Linux VPS,我可以从中看到一些图表。它确实显示最大传入数据包(294.86 p / s)和传出(201.53 p / s)。有相当多的非常陡峭的山脉,这可能是游戏正在经历的滞后峰值。该图还显示20-40 p / s。这是另一个(日期)图表:Link

0 个答案:

没有答案