Socket.io中的频道

时间:2010-05-18 16:36:37

标签: sockets node.js websocket

我正在尝试通过Node.js服务socket.io(http://socket.io/)向所有订阅者的某个子集广播消息。

更确切地说,我想使用用户可以订阅的频道,以便有效地将消息同时推送给几百个人。

我不确定addEvent('channel_name',x)是否可行。

我在文档中找不到任何内容。有什么想法吗?

由于 垫

4 个答案:

答案 0 :(得分:4)

这有点晚了(!)但是我在我的推荐人日志中发现了它(我是Faye的作者)。从您的应用程序发布消息很容易,无论它是否与Faye在同一服务器中。例如:

var faye = require('faye'),
    http = require('http');

// Set up the server

var server = http.createServer(function(req, res) {
  // dispatch to your app logic...
});

var bayeux = new faye.NodeAdapter({mount: '/bayeux'});
bayeux.attach(server);
server.listen(8000);

如果您的应用逻辑位于同一服务器进程中,则可以执行此操作:

bayeux.getClient().publish('/channel', {hello: 'world'});

否则,您可以在Node中创建一个连接到您的Faye服务器的客户端:

var client = new faye.Client('http://0.0.0.0:8000/bayeux');
client.publish('/channel', {hello: 'world'});

无论哪种方式,Faye服务器都会将消息中继到任何订阅的客户端,无论他们是服务器端还是客户端。希望有所帮助。

答案 1 :(得分:0)

您似乎可以使用Redis发布/订阅功能。请参阅this link

答案 2 :(得分:0)

我现在开始研究同样的问题。 Socket.io看起来很棒,但是,我认为你必须自己管理用户列表。大多数示例应用程序仅使用单个订户列表。

我确实碰到过这个...... http://faye.jcoglan.com/

它将您的服务器变成pubsub应用程序。它看起来很好地管理订户列表,它为渠道提供了一个很好的层次结构。但是,我找不到它响应运行faye的同一个应用程序中发布的事件的示例?我猜这是可能的。我将不得不看看来源。它似乎给出了在服务器上运行单独节点应用程序的示例,该应用程序充当客户端。

我正在寻找的另一个功能是权限。我只希望某些客户能够发布到某些渠道。

答案 3 :(得分:0)

似乎this other question也会回答这个问题,但是如果它没有,你应该看看socket.io namespaces,认为它是刚刚推出但是认为值得一提