gpt4 book ai didi

javascript - Websocket 未向所有客户端发送数据

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

美好的一天,

我正在使用node.js https://github.com/felixge/node-mysql mysql 包。

我这里有一个脚本,可以向所有连接的客户端发送数据(至少应该如此)

for(var i = 0; i < clients.length; i++)
{
sql.query("SELECT coins FROM users_steam WHERE steamid="+clients[i].ID,function(err,rows){
if(err) throw err;
var bal = rows[0].coins;

clients[i].send(JSON.stringify({
'type':'roll',
'roundid':ROUND,
'places':r,
'wait':WAIT,
'roundtime':RollTime,
'balance':bal
}));
clients[i].balRefreshes=0;

});
}

尽管问题是,我得到了 TypeError: Cannot call method 'send' of undefined,这意味着 id 没有正确分配。在这种情况下我应该按顺序执行查询还是做其他事情?

谢谢

最佳答案

我看到的第一个问题是,由于您的数据库调用是异步的并且稍后会被调用,因此变量“i”将与其在选择查询中的值不同。

例如,尝试在控制台中运行以下代码:

    for(var i = 0; i < 100; i++)
{
setTimeout(function(){
console.log(i)
}, 1000);
}

你可以尝试这个:

clients.forEach(function(client, i){
setTimeout(function(){
console.log(i)
}, 1000);
});

关于javascript - Websocket 未向所有客户端发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729856/

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