5

Node.jsサービスsocket.io( http://socket.io/ ) を介して、すべてのサブスクライバーの特定のサブセットにメッセージをブロードキャストしようとしています。

より正確には、同時に数百人にメッセージを効率的にプッシュするために、ユーザーがサブスクライブできるチャネルを使用したいと考えています。

addEvent('channel_name',x)行く方法がある かどうかはよくわかりません。

ドキュメントには何も見つかりませんでした。何か案は?

サンクスマット

4

4 に答える 4

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'});

それ以外の場合は、Faye サーバーに接続するノードでクライアントを作成できます。

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

いずれにせよ、Faye サーバーは、サブスクライブしているクライアントがサーバー側であるかクライアント側であるかに関係なく、メッセージを中継します。それが役立つことを願っています。

于 2010-12-16T17:46:40.397 に答える
0

現在、同じ問題の研究を始めています。Socket.ioは見栄えがしますが、そうです、サブスクライバーリストを自分で管理する必要があると思います。そこにあるほとんどのサンプルアプリは、単一のサブスクライバーリストのみを使用します。

私はこれに出くわしました... http://faye.jcoglan.com/

サーバーをpubsubアプリに変えます。サブスクライバーリストを非常にうまく管理し、チャネルに優れた階層を提供しているようです。ただし、fayeを実行している同じアプリ内で公開されたイベントに応答する例を見つけることができませんか?可能だと思います。ソースを確認する必要があります。クライアントとして機能するサーバー上で別のノードアプリを実行する例を示しているようです。

私が探している他の機能は権限です。特定のクライアントだけが特定のチャネルに公開できるようにしたいと思います。

于 2010-06-23T05:36:12.257 に答える
0

この他の質問もこれに答えるようですが、そうでない場合は、socket.io名前空間を確認する必要があります。最近導入されたと思いますが、言及する価値があると思います。

于 2011-10-23T11:07:31.350 に答える
0

これには、Redis のパブリッシュ/サブスクライブ機能を使用できるようです。このリンクを参照してください。

于 2010-05-20T13:18:56.580 に答える