gpt4 book ai didi

javascript - 为什么当另一个客户端(新选项卡)连接时我的多人 javascript 游戏速度变慢?

转载 作者:行者123 更新时间:2023-11-29 22:30:22 27 4
gpt4 key购买 nike

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

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

为什么当我启动另一个客户端时它会变慢?这是代码:

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
}

游戏.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 到连接的任何东西。没有更多信息很难说。

您的代码是否始终保持与客户端的连接打开?

关于javascript - 为什么当另一个客户端(新选项卡)连接时我的多人 javascript 游戏速度变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com