1

http バインディングと ejabberd を使用して、Web ベースのインスタント メッセージング/チャット機能を実装しました。怠け者のために、私の質問の短いバージョンを次に示します。

複数のブラウザ ウィンドウに同時に表示できる Web ベースの XMPP チャット クライアントを実装するにはどうすればよいでしょうか。それぞれが開いているチャットの同一のビューを表示します。

気にする人のためのより詳細なとりとめ:

考えられる解決策の 1 つは、すべてのタブが独自の接続を管理できるようにすることです。XMPP は複数のクライアントを適切にサポートしているため、ルーティングは XMPP に任せてください。このソリューションには少なくとも 2 つの問題があります。1 は、これが引き起こす帯域幅消費の明らかな増加です。2 は、ejabberd で MUC ルームに接続するために、同じ JID を持つ複数のクライアントが現在サポートされていないことです。これは 3.1 で実装されるようですが、現状では私にとって大きな問題です。

最初は、フラッシュ マジックが関係しているのではないかと思っていましたが、ページの SWF は通知の効果音を再生するためだけに使用されているようです。これは、firebug などを使用して埋め込みタグを削除することで確認できます。チャット機能は引き続き機能します。

これにより、基本的に、タブ間で共有する唯一の方法として Cookie が残ります。このシナリオでは、マスター タブはすべてのメッセージを他のタブからポーリングできる Cookie にダンプします。待ち時間を避けるためにポーリング頻度を非常に高くする必要があるため、これは非常にばかげているように思えます。「マスター」ウィンドウを閉じるとどうなりますか?

私はこれが複数のサイトで行われているのを見てきました.通常、これらの問題を見ると、少なくともぼんやりと理解できますが、これが私を困惑させたことを認めてもかまいません.

4

1 に答える 1

0

だから私はもう少しFacebookのチャットをいじくり回しました、そして彼らはただすべてのタブにそれ自身の接続を管理させているようです。Ejabberdは、MUCルームでこれを達成するためにいくつかのハードルを設定しているので、最初はこのソリューションを割り引く傾向があったと思います。プライベートメッセージは、興味のある人にとってはもっと簡単なはずだと思います。

複数のMUCインスタンスの問題は、https: //support.process-one.net/browse/EJAB-305です。

ejabberdにパッチを適用するためのケースを作成する必要があると思います。誰かが他の観察を持っているなら、私はそれらを聞きたいです。

于 2010-07-19T08:01:39.293 に答える