PHP ジャバー:ログインしてメッセージを確認して切断すると、他のユーザー側では切断済みとして表示されます
質問
私がやっていることは完全に正しいかどうかはわかりません。しかし、次のようになります。
- ユーザーは Web ベースのインターフェイス経由でチャットにログインします
- ユーザーには Comet 経由でアップデートが通知されます
- ユーザーが詳細を入力すると、PHP ファイルに移動し、さらに Jabber サーバーに接続します。
ここで問題は、ユーザーがメッセージを送信したいとき、それは簡単で、Jabber サーバーに接続してメッセージを送信する php を実行することです。メッセージを待っているときに問題が発生します。ログインしてメッセージを確認して切断すると、他のユーザー側では切断済みとして表示されるためです。
この問題へのアプローチが間違っているのでしょうか?中間の PHP レイヤーではなく、Jabber サーバーに (JavaScript 経由で) 直接接続する必要がありますか?PHP経由でメッセージを受信するにはどうすればよいですか?
解決
これは、http持つ固有の問題(または機能)である - 何の永続的な接続が(本当に)はありません。あなたは本当の解決策はありませんが、回避策は必要あります。
は、Javaやフラッシュでそれを行うことができ、それは本当に素晴らしいではありません(ジャバスクリプト4tw!)。
他の可能性はウェブサーバとジャバーサーバ間の接続にブラウザとウェブサーバ間の接続を変換するもの中間クライアントを作成することです。 の厄介な、しかし可能。の
または多分これに役立つAPIがあります。
を直接JavaScriptでのJabberサーバに接続するの
私はおそらく、最新のAjaxの発明によって眠ったが、私の知る限り、あなたは唯一のソース・htmlファイルは、(greasmonkeyとアドオンを無視して)から来ているホストと通信することができます。 の無異なるドメイン、ノー異なるポート、期間を。のブラウザにあなたのchatpage-HTMLを提供するためにどのようにあなたのJabberサーバーを教えるつもりがない限り、これは問題になります。それはマルチパート・レスポンスを必要とするので、さらに、接続に滞在することにも、動作しません。これらは、唯一の醜いアヒルの子COMETも最初の場所に存在する理由ですモジラでサポートされている、とのされている。の彗星自体のデータを転送しながら、接続を保持できないことを回避するための回避策です。
他のヒント
試したことはありませんが、見てみると良いかもしれません xmpphp. 。次に、ユーザーが Web サイトにログインしている限り、ユーザーを XMPP サーバー (別名 Jabber サーバー) にログインさせておくことを検討することをお勧めします。おそらく、ユーザーが Web サイトから離れて戻ってこない場合に備えて、何らかのタイムアウトを設けておきたいでしょう。
JavaScript 経由で接続する必要があるかどうかについては、なぜ接続できないのかわかりません。最も簡単だと思われるものを選択することをお勧めします。チェックしてみてはいかがでしょうか ストロフ, 、その場合、良いことを聞きます。
ただし、私が広範囲に使用した唯一の XMPP ライブラリは、 ヘッドストック, 、ただし、それには使用する必要があります パイソン そして カマエリア.
それでは何が問題かというと、私はその時のJabberユーザーに対応しています。の問題があり、少なくとも、一部のユーザーへの対応や他のユーザーのJabberサーバーしていくのか、といったphpスクリプトである"ことを認識しこの応答がなく、接続を開く(ある意味でのスクリプトはなくなり、おそらく).
一つのオプションもあれ、うん、は:
しているphpスクリプトが仲介業者への接続Jabberサーバの送信-受信の両方のユーザー様ページ
利用のAJAXで送信メッセージのユーザーのAJAXポイント上記のスクリプトは、スクリプトを送信することができます。)
てJavascriptを無限ループをピ同スクリプトまで10秒でチェックがあります。がある場合にもバナンスのクライアントに出力に使用しています。
が問題に
1)利用者がいない接続時にメッセージを送信するphpスクリプトが見たいメッセージを取得します?
2)クライアント側のループがajaxご要望を毎3秒であろう大きなレギュレータを交換する
解決法2:
OpenFire jabberサーバーです。でwebチャットお客様蔵されており、そのアドオンと呼ばれFastpathるように対応HTMLに基づくチャットクライアント終了などの"チャットエンジン!"特集も多くの支援です。)
使用していることでカスタマイズできる統合は他のスクリプト(インスタンスしたい場合は、スクリプトを埋めるユーザーの詳細からログインするか、追カスタムアバターなど)、(OpenFire)はトンのその他の拡張子とアドオンとこなんだろうっていうのをお届けできます。