4

ERlang、Cowboy、Websocket、および gen_bunny を使用して Websocket チャットを統合しようとしています。

私は彼らを独立して働かせることができます。

Browser -> Cowboy websocket チャット (Works) Erlang と RabbitMQ AMQP (Works)

それらを統合すると、ブラウザからCowboyにメッセージを取得してRabbitMQに渡し、RabbitMQから再度取得できます。

メッセージを送信したユーザーに返信することもできます。ただし、接続しているすべてのユーザーにメッセージをブロードキャストしたいと考えています。

私の理解では、Erlang はユーザーごとに個別のプロセスを作成します。では、RabbitMQ からの応答を受け取った後、接続されているすべてのユーザーにブロードキャストする方法は??

4

3 に答える 3

1

gproc プロジェクトを見てみましょう: https://github.com/uwiger/gproc

あなたが言及したチャットを構築するために使用できる Pub/Sub パターンがあります。

gproc の wiki から:

subscribe(EventType) ->
    %% Gproc notation: {p, l, Name} means {(p)roperty, (l)ocal, Name}
    gproc:reg({p, l, {?MODULE, EventType}}).

notify(EventType, Msg) -> 
    Key = {?MODULE, EventType},
    gproc:send({p, l, Key}, {self(), Key, Msg}). 
于 2013-05-01T20:05:21.863 に答える
0

すべてのカウボーイ プロセスは、独自の Rabbit キューを取得します。ブロードキャストは、ワイルドカード バインドで機能します。明示的なループは含まれません。それに応じてバインドしないことで、サブスクリプションをオプションにすることができます。参照:すべてのサブスクライバーがメッセージを受け取るようにキューをセットアップする方法 - Rabbit MQ

于 2013-05-23T17:07:31.540 に答える