是否可以使用node socket.io创建后台任务

时间:2016-08-25 06:10:41

标签: node.js socket.io

我正在使用socket.io将通知推送到浏览器。 这些通知由其他浏览器的操作触发。 我想做一个后台任务,有时发送通知。 例如,在12:45:21我想向所有连接的用户发出通知,即使他们什么都不做。有可能吗?

2 个答案:

答案 0 :(得分:0)

理想情况下应该是可能的。与我保持联系,幸运的是我们刚开始投资几乎相同的情况。我的直觉就是说这样做。

您必须从所有活动的浏览器中打开一个连接。这可以通过从default.jade中打开socket来实现,这将在所有页面中生效。

//client side code effective in all pages.
socket = io(); 
socket.emit('join');

现在在服务器端将它们存储到默认房间。

 socket.on('join', function(json){
      socket.join('globalroom');
   });
因此,你可以在12点45分发射到那个房间。

 io.to('globalroom').emit('msg', "Happy new Year. ");

答案 1 :(得分:0)

当然,这很容易。只需使用标准的Javascript setInterval技术:

var io = require('socket.io')(80);

setInterval(function() {
    io.emit('hi!');
}, 60000);

这将每隔60秒向所有连接的客户端发送一条消息。要实现特定时间发送,只需更改上面的方法,使其每1秒调用一次,然后在其中,将当前时间与您想要触发的时间进行比较。