Nyx*_*nyx 22 javascript sockets node.js express socket.io
我有一个循环,不断查询数据库.当查询返回结果时,node.js应用程序将通过socket.io v0.8向连接到节点服务器的每个客户端发送一条消息.
问题: 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);
Run Code Online (Sandbox Code Playgroud)
但是,如果setInterval要从内部调用io.sockets.on('connection',..),则每个连接的客户端都将创建一个额外的循环!
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);
});
Run Code Online (Sandbox Code Playgroud)
Clientside JS
socket.on('hello', function() {
console.log('HELLO received');
})
Run Code Online (Sandbox Code Playgroud)
*如何运行SINGLE循环,但仍然能够向所有连接的客户端发送消息?
| 归档时间: |
|
| 查看次数: |
10619 次 |
| 最近记录: |