我正在尝试通过Node.js
服务socket.io
(http://socket.io/)向所有订阅者的某个子集广播消息。
更准确地说,我想使用用户可以订阅的频道,以便有效地将消息同时推送给几百人。
我不确定是否addEvent('channel_name',x)
是要走的路。
我在文档中没有找到任何东西。有任何想法吗?
谢谢垫
我正在尝试通过Node.js
服务socket.io
(http://socket.io/)向所有订阅者的某个子集广播消息。
更准确地说,我想使用用户可以订阅的频道,以便有效地将消息同时推送给几百人。
我不确定是否addEvent('channel_name',x)
是要走的路。
我在文档中没有找到任何东西。有任何想法吗?
谢谢垫
这有点晚了(!)但我在我的推荐人日志中发现了它(我是 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 服务器都会将消息中继到任何订阅的客户端,无论它们是服务器端还是客户端。希望有帮助。
看来您可以为此使用 Redis 发布/订阅功能。请参阅此链接。
似乎this other question也会回答这个问题,但如果不是,您应该查看socket.io namespaces,认为它是最近才引入的,但认为值得一提
我现在开始研究同样的问题。Socket.io 看起来很棒,但是是的,我认为您必须自己管理订阅者列表。大多数示例应用程序只使用一个订阅者列表。
我确实遇到过这个...... http://faye.jcoglan.com/
它将您的服务器变成一个 pubsub 应用程序。看起来它很好地管理了订阅者列表,并且为频道提供了一个很好的层次结构。但是,我找不到它在运行 faye 的同一应用程序中响应已发布事件的示例?我猜这是可能的。我得看看源头。它似乎给出了一个在服务器上运行一个单独的节点应用程序作为客户端的例子。
我正在寻找的另一个功能是权限。我只希望某些客户能够发布到某些频道。