Socket.io中的通道

我试图通过Node.js服务socket.io( http://socket.io/ )广播一条消息到所有订户的某个子集。

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

我不确定是否addEvent('channel_name',x)是要走的路。

我没有在文档中find任何东西。 有任何想法吗?

谢谢你

这有点晚(!),但我发现它在我的引用日志(我是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'}); 

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

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

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

看来你可以使用Redis的发布/订阅function。 看到这个链接 。

目前我正在研究同样的问题。 Socket.io看起来不错,但是,我想你必须自己pipe理用户列表。 大多数示例应用程序只使用一个用户列表。

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

它将您的服务器变成一个pubsub应用程序。 看起来它很好地pipe理用户列表,它为通道提供了一个很好的层次结构。 然而,我无法find一个例子,在同一个应用程序运行faye响应发布的事件? 我猜这是可能的。 我得看看源代码。 它似乎给出了一个运行在作为客户端的服务器上的单独的节点应用程序的例子。

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

似乎这个问题也会回答这个问题 ,但是如果不是,你应该看看socket.io命名空间 ,认为它是在最近才引入的,但是认为它是值得一提的