2011-06-20 7 views
2

DjangoとXMPPに基づいた環境を設定するためのアドバイスが必要です。DjangoとXMPP-over-BOSHを統合するには

私のサイトには2つの部分があります。

パートA:ユーザーは、Djangoを使用しているページでStrophe.JSのようなブラウザ内のXMPPクライアントを使用します。

パートB:サイトのパートAを使用して通信しているユーザーと通信するために、異なるユーザーのセットによって使用されます。ここのユーザーは、Djanoを介したサーバーであるStrope.JSのようなブラウザー内のXMPPクライアントも使用します。

ブラウザで通信が行われるので、私は実際のXMPPストリームを使用せず、XMPP over BOSHを使用します。私は、BOSH上のXMPPは、HTTPインターフェイス上でのトランスファーXMPPメッセージの事実上の方法だと読んだ。

パートAの解決策は簡単です。 Strophe.JSライブラリが入った通常のWebページです。難しい部分はPart Bのユーザーを処理する方法を考えているようです。Part AユーザーとPart Bユーザーの間でXMPPメッセージを中継する必要があります。パートBユーザーは、パートAのユーザーのためにDjangoシステムから情報にアクセスする必要があります.XMPPとDjangoの間にはかなり良い統合が必要です。

誰かがこのようなシステムをどのように書くのか教えていただけますか?どのツールを使用しますか?スタンドアローンのXMPPサーバーを使用してDjangoに統合することはできますか?もしそうなら、何?パートAのユーザーがチャットセッションを開始すると、サイトのパートBのユーザーに表示されますが、ユーザーのチャットリクエストを処理するユーザーはDjangoから取得した情報に依存します。

ありがとうございます。

+1

[Convoreの背後にある技術](http://www.eflorenzano.com/blog/post/technology-behind-convore/)を調べるとよいでしょう。 –

答えて

1

スタンドアロンのJabber/XMPPサーバー(ejabberdなど)が必要です。パートAのユーザーはチャットルームA(MUC)内でコミュニケーションし、パートBの同じユーザーはチャットルームB内でコミュニケーションを取ることになります。3つのスクリプト/デーモンを書く必要があります(perlとNet :: Jabberを使用します(Net :: XMPPはMUCに参加できません))。それらは:scripta、scriptb、mediatorです。

  • スクリプト/デーモンAはMUCルームAに参加し、メディエータはその名簿の一部です。すべてのメッセージスタンザをリッスンしますが、一部にのみ反応します(例:本文「SendToB MSG」のメッセージスタンザ)。このメッセージは、チャットルームAに参加したユーザから送信されます。その後、「RelayToB MSG」は、scripta(送信元:[email protected]、宛先:[email protected])によってメディエータに送信されます。メディエーターは、メッセージ・スタンザ本体の「RelayToB」部分に基づいてMUC Bに「RelayFromA MSG」を送信します。 scriptbは "RelayFromA MSG"を受信し、チャットルームBに "MSG"を送信します。

  • スクリプト/デーモンB(同じロジック)[email protected]がユーザーロスタにあります。

  • メディエータは任意のチャットルームに参加しません。それはその名簿に[email protected][email protected]を持つでしょう。チャットルーム間でのみメッセージを中継します。

私はすでにHow to create a jabber/XMPP proxy/logging service?というサンプルコードを掲載しています。コードはscripta/bを適用します。コードはかなり長く、InMessageとInPresenceサブをチェックしてください。他のものは私のニーズに関係しています。

私は十分にはっきりしていたと思います。もっと多くの質問をすることをためらってください。

EDIT:

  1. Perlとネット:: Jabberのを使用してスクリプトを作成します。 XMPPサーバーにログインするユーザーは[email protected]になります。誰もが彼にメッセージを送ることができます。メディエータはメッセージをフォーマットでサポート担当者に転送します(From:user1 MSG)。サポート担当者はメッセージ(返信:user1 REPLY)で[email protected]に返信します。メディエータはREPLYをuser1に転送します。
  2. ここでmod_shared_rosterを確認してください。http://www.ejabberd.im/shared-roster-all(例4)、ここではhttp://www.process-one.net/docs/ejabberd/guide_en.html#htoc61です。

2番目のソリューションでは、ページのjavascript/stropheコード以外に追加のコーディングは必要ありません。

+0

こんにちはギルジ。私は何かを見つけたhttp://www.speeqe.com/。どう思いますか?コードはhttps://github.com/thepug/speeqe/wikiにあります。これは有望な解決策のようですか? Speeqeはマルチユーザのチャットルームを作っているようですが、FB、GTalkなどの2人のチャットが必要です。 –

+0

私の野生の推測は間違っているようです:)。まず、あなたのサイトのパートAとパートBの意味をより詳しく説明してください。 –

+0

簡単なこと:私はライブチャットシステムを実装する必要があります。サイトのユーザーはチャットを開始でき、サイトの裏にいるサポート担当者がユーザーを支援できます。メッセージングは​​XMPPに基づいている必要があります。これはそれを明確にしていますか?サイトのユーザーは一度に1人の人とチャットしていますが、サポート担当者は複数のチャットを処理しています。 –

関連する問題