Nodejs - socketio - 在所有浏览器窗口中更新信息

时间:2013-06-14 17:21:46

标签: javascript node.js server-sent-events socket.io

我刚开始学习如何制作网络应用程序。我在nodejs(待办事项列表应用程序)中创建了一个web服务器。我使用快速框架,mongodb作为数据库。对于客户端和服务器之间的通信,我正在使用socket.io。

我找不到一种方法来使它成为当服务器发出和事件时客户端将更新他所有打开的页面窗口的信息。此时,信息仅在触发服务器上的事件的窗口上更新。这是服务器代码:

服务器代码:

var io = require('socket.io').listen(server);
io.of('/home').on('connection', function (socket) { 
    socket.on('newListGroup', function (data) {
        ...
        socket.emit('groupNo', obj);
    });
}); `

客户端javascript:

var socket = io.connect('http://localhost/login');
socke.on('groupNo', function(data){ ... });
$('#newListGroup').blur(function() {
    socketLogin.emit('newListGroup', {newGroup:newGroup});
});

这可行或者我应该采取另一种方法吗?

1 个答案:

答案 0 :(得分:4)

您可以向所有套接字广播消息,如下所示:

var io = require('socket.io').listen(server);
io.of('/home').on('connection', function (socket) {
    socket.on('newListGroup', function (data) {
    socket.broadcast.emit('groupNo', obj); });
});

它应该仅限于命名空间,但你可能必须实现自己的逻辑,只在同一个客户端上播放窗口(可能使用身份验证),如果你想做的话。