gpt4 book ai didi

node.js - socket.io 根据存储在 mysql 数据库中的套接字 ID 创建动态房间

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:50 24 4
gpt4 key购买 nike

我将每个连接用户的事件套接字 ID 存储在 mysql 数据库中。我想从数据库中获取一些选定的用户,然后为这些选定的用户创建一个房间,并向这个动态创建的房间广播消息。这是我的代码:

var query = pool.query('SELECT socketid FROM registration WHERE sent=1'),
users = []; // this array will contain the socketid's of connected users stored in our db query
query
.on('error', function(err) {
console.log( err );
})
.on('result', function( user ) {
users.push( user );
});

io.emit('refresh feed',status);
users.foreach(function(socketid){io.sockets.connected[socketid].join(sendingSocket.id);});
sendingSocket.to(sendingSocket.id).emit('publicMessage', 'Hello! How are you?');

最佳答案

调用数据库需要一些时间。但如果我是正确的,您将异步调用查询方法。这意味着,在填充用户数组之前,您已经对其进行了迭代。使用 users 数组在 io.emit 之前添加控制台输出。

解决方案是将最后三行放入 on('result') 处理程序中。

关于node.js - socket.io 根据存储在 mysql 数据库中的套接字 ID 创建动态房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30527262/

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