6

私は少し混乱しているように感じます — 約 24 時間、自分のプロジェクトでどのグループ放送技術を使用するかを考えていました。

基本的に、私が必要とするものは次のとおりです。

  • グループを作成します (何らかのバックエンド プロセスによって)
  • 任意のクライアントによるブロードキャスト メッセージ (1:N、N:N)
  • (潜在的に) ダイレクトメッセージ (1:1)
  • (重要)クライアントを自分のバックエンドで認証/承認します(たとえば、ある種のHTTP APIを介して)
  • バックエンド プロセス (またはサーバー プラグイン) によって特定のクライアントをキックできるようにする

これが私が持っているものです:

  1. Ruby または Haxe のバックエンド関連プロセス
  2. JS+Haxe(Flash9) のフロントエンド — ブラウザーで、理想的には 80/443 を介して通信しますが、必ずしもそうとは限りません。

したがって、このテクノロジーは、Haxe for Flash、できれば Ruby で簡単にアクセスできる必要があります。

私が考えているのは、RabbitMQ (または OpenAMQ)、RabbitMQ+STOMP、ejabberd、ejabberd+BOSH、juggernaut (Haxe ライブラリを作成する必要がある) です。

アイデア/提案はありますか?

4

5 に答える 5

3

ゆりぃ、

RabbitMQ、Haxe、および as3: http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/

RabbitMQ、Ruby、および ACL: http://pastie.org/pastes/368315

バックエンド グループを管理するために、 RabbitMQで Nanite を使用することも検討してください。

あなたはあなたが必要だと言います:

* broadcast messages by any client (1:N, N:N)
* (potentially) direct messages (1:1)

どちらも RabbitMQ を使用して簡単に実行できます。RabbitMQ は、1:N pubsub と 1:1 メッセージングの両方のケースを「直接」交換でサポートします。

直接交換のパターンは次のとおりです。

パブリッシャー (グループ メンバー) は、「yurii」などの「ルーティング キー」を使用してブローカーにメッセージを送信します。RabbitMQ は、このキーをルーティング テーブル (別名「交換」) のサブスクリプション バインディングと照合します。各バインディングはキューによってサブスクリプションを表し、特定のルーティング キーを持つメッセージへの関心を表します。ルーティング キーとバインディング キーが一致すると、メッセージはキューにルーティングされ、その後クライアント (グループ メンバー) によって消費されます。これは 1:N および 1:1 の場合に機能します。N:N の建物を 1:N で。

ルーティング モデルの概要: http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/

一般的な紹介: http://google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html

以下も必要です。

* (important) authenticate/authorize clients with my own backend (say, through some kind of HTTP API)

これについては、ACL コードを参照してください (上記のリンク)。RabbitMQ への HTTP インターフェースもありますが、まだ HTTP フロントエンドと ACL コードを組み合わせていません。しかし、それはオユを引き留めるべきではありません。このトピックが最近話題になっているrabbitmq-discussリストに来てください.

以下も必要です。

* create groups (by some backend process)
* to be able to kick specific clients by backend process (or server plugin)

Nanite や Workling などのツールがこれをどのように行っているかを調べることをお勧めします。通常、グループの作成はメッセージング システムの一部ではありません。代わりに、RabbitMQ では、サブスクリプションを使用してルーティング パターンを作成します。消費キューを交換にバインドするために使用したキーを使用して、特定のクライアントにメッセージを送信することで、特定のクライアントをキックできます。

お役に立てれば!

アレクシス

于 2009-02-16T07:38:21.437 に答える
1

ActiveMQ を使用しています。当社の人事システムを提供するベンダーは、更新のブロードキャストと受信に Ruby/ActiveMQ を使用しています。

http://activemq.apache.org/cross-language-clients.html

于 2009-02-16T01:25:14.067 に答える
1

グループ通信は、単純なメッセージング/キューイングとは少し異なります。

ほとんどのグループ通信システムは商用ですが、(私が知っている) オープンソース/無料の 2 つがあります。

ただし、どちらも Ruby バインディングを見つけるのは難しいかもしれません。Spread、そしておそらく OpenAIS は、クライアントを信頼できるものと見なすので、ブラウザベースのクライアントは意味がありません。ブラウザのフロントエンドがバックエンドのグループ クライアントと通信する必要があります。

于 2009-02-16T00:51:00.293 に答える
1

Flash 開発を行う場合、SmartfoxServer を見たことがありますか? 必要なものがすべて揃っており、ネイティブの Flash クライアント ライブラリがあります。私はプロジェクトで、数万人の接続ユーザーを管理するために使用しました。

http://www.smartfoxserver.com/

于 2009-02-16T01:05:26.047 に答える
0

Stomp プロトコルをサポートするその他のオープン ソース メッセージ ブローカーには、GlassFish V3 および GlassFish 2.1.1 に含まれているがスタンドアロンでも動作する OpenMQ と、まもなく JBoss メッセージ ブローカーである HornetQ V2.1 があります。OpenMQ は RPC スタイルの通信に役立つ一時キューをサポートしていますが、ActiveMQ は Stomp アダプターでもいくつかの興味深い機能を提供しています。

于 2009-12-16T16:55:39.470 に答える