我正在尝试通过Node.js服务socket.io(http://socket.io/)向所有订阅者的某个子集广播消息。
更确切地说,我想使用用户可以订阅的频道,以便有效地将消息同时推送给几百个人。
我不确定addEvent('channel_name',x)是否可行。
我在文档中找不到任何内容。有什么想法吗?
由于 垫
答案 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,认为它是刚刚推出但是认为值得一提