套接字.在io.sockets之外发送.在()
socket.send outside of io.sockets.on( )
我有一个连续查询数据库的循环。当查询返回结果时,node.js应用程序将向通过套接字连接到节点服务器的每个客户端发送消息。io v0.8。
问题: io.sockets.broadcast.send('msg')
在setInterval()
循环的中间被调用,所以它不在io.sockets.on()
的回调函数内,因此这将不起作用。当使用io.sockets.send('msg')
时,似乎没有消息发送到客户端。
node . js代码/strong>
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代码/strong>
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);
});
Clientside JS
socket.on('hello', function() {
console.log('HELLO received');
})
*我怎么能得到一个单循环运行,但仍然能够发送消息给所有连接的客户端?
我想这会成功地解决你的问题。
io.sockets.emit('hello')
改进@Nyxynyx之前的回答
io.sockets.emit('hello')
相当于:
io.of('/').emit('hello');
如果需要其他路由,请修改of
功能参数。
文档:https://socket.io/docs/v3/server-api/index.html服务器套接字
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使用Socket.io将命令从客户端发送到服务器
- 使用Native Sockets在Android中实现WebSockets
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- Node.js-socket.io-对io.sockets的引用突然未定义
- io.sockets.mit未向服务器发送消息
- 事件发射器模式如何在Node,sockets.io中工作
- io.sockets.clients()给出错误“”;将循环结构转换为JSON”;
- Socket.io clients.length 的困境(其中 clients === io.sockets.clien
- 如何从sockets.io触发的线程启动单独的线程
- NodeJS、Express、Sockets.io:无法在服务器上启动.on(“connection”
- io.sockets.manager.rooms leading 'undefined' in room
- 套接字.在io.sockets之外发送.在()
- nodejs net sockets + websocket without socket.io
- Setting up node.js and sockets.io
- 我如何有io.sockets.on调用外部/全局函数