为什么我的多人游戏的JavaScript游戏减速时,另一个客户端(新标签)连接?

我正在尝试使用canvas,socket.io和node.js来制作一个简单的多人游戏。 一切都好,直到另一个人连接(我打开另一个选项卡,并在那里加载游戏)。 当发生这种情况时,一切都会变慢,最终会停止(我可以“移动”)。

工作原理:当有人连接到服务器时,服务器将其套接字保存在一个数组对象中,并开始与客户端进行通信。 客户端发送一个包含它的名字和位置的对象,然后服务器通过这个套接字数组发送给所有连接的其他人。 当一个客户端收到一条消息时,它会提取数据,然后用它做一些事情(比如根据位置进行绘图),然后在10ms内设置一个超时,用他的位置和名字回复服务器。 正如我所说,这一直持续下去,直到我打开一个新的窗口/标签并重新连接。

为什么当我启动另一个客户端时会减慢速度? 代码如下:

server.js(这只是一段代码,其余部分来自socket.io示例)

io.sockets.on('connection', function (socket) { socket.emit('init', {id: names[players.length], level: 5}); socket.on('got', function (data) { console.log("got"); players.push(new Player(socket)); socket.emit('update', {msg: "ks"}); }); socket.on('update', function (data){ for (i = 0; i < players.length; i++) { players[i].socket.emit('update', {msg: data}); } }); }); Player = function(socket) { this.socket = socket } 

game.js

 self.socket.on('init', function (data) { self.pl = new self.Player(data.id, data.level); console.log(self.pl.id); self.defined = true; self.socket.emit('got', { my: "data" }); }); self.socket.on('update', function (data){ self.pars(data); setTimeout(function(){self.socket.emit('update', {'pos': self.pl.pos, 'id': self.pl.id})}, 10); }); 

我的第一个想法是资源问题,我猜这是在你的本地机器上运行,你可能只是吃掉了所有的资源。

它可能是从CPU到连接的任何东西。 很难说没有更多的信息。

你的代码是否连接到客户端打开整个时间?