gpt4 book ai didi

javascript - socket.send 在 io.sockets.on() 之外

转载 作者:IT老高 更新时间:2023-10-28 22:08:13 26 4
gpt4 key购买 nike

我有一个连续查询数据库的循环。当查询返回结果时,node.js 应用程序将向通过 socket.io v0.8 连接到 Node 服务器的每个客户端发送一条消息。

问题: io.sockets.broadcast.send('msg')setInterval() 循环中间被调用,所以它不在 io.sockets.on() 的回调函数中,因此这不起作用。当使用 io.sockets.send('msg') 时,似乎没有消息发送到客户端。

Node.js 代码

setInterval(function() {
util.log('Checking for new jobs...');
dbCheckQueue(function(results) {
if (results.length) {
io.sockets.broadcast.send('hello');
}
});
}, 10*1000);

但是,如果要从 io.sockets.on('connection',..) 中调用 setInterval,则每个连接的客户端都会创建一个额外的循环!

Node.js 代码

io.sockets.on('connection', function(socket) {
setInterval(function() {
util.log('Checking for new jobs...');
dbCheckQueue(function(results) {
if (results.length) {
io.sockets.send('hello');
}
});
}, 10*1000);
});

客户端 JS

        socket.on('hello', function() {
console.log('HELLO received');
})

*如何让 SINGLE 循环运行,但仍能向所有连接的客户端发送消息?

最佳答案

我认为这将成功解决您的问题

io.sockets.emit('hello')

关于javascript - socket.send 在 io.sockets.on() 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281382/

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