2016-08-25 82 views
0

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

+0

请看看[如何提出问题](http://stackoverflow.com/help/how-to-ask)? – NickyvV

+0

在你面前有两个答案。而且你还没有回应,无论他们中的任何一个是否正在工作/也没有工作......那很糟糕。 – enRaiser

回答

0

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

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

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

这将每隔60秒向所有连接的客户端发送消息。要实现特定时间发送,只需更改上面的方法,以便每隔1秒调用一次,并在里面将当前时间与您希望触发的时间进行比较。

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. "); 
相关问题