4

私がやっていることが絶対に正しいかどうかはわかりません。しかし、ここに行きます:

  1. ユーザーは Web ベースのインターフェースを介してチャットにログインします
  2. ユーザーはコメット経由で更新を通知されます
  3. ユーザーは、Jabber サーバーにさらに接続する PHP ファイルに移動する詳細を入力します

問題は、ユーザーがメッセージを送信したい場合、それは簡単で、jabber サーバーに接続してメッセージを送信する php を実行することです。メッセージを待っているときに問題が発生します。ログインしてメッセージを確認して切断すると、他のユーザー側では切断されたように表示されます。

この問題に間違った方法で取り組んでいますか? Jabber サーバーに (javascript 経由で) 直接接続する必要がありますか? PHP経由でメッセージを受信するには?

4

3 に答える 3

1

私はそれを試していませんが、xmpphpを見たいと思うかもしれません。次に、ユーザーがWebサイトにログインしている限り、ユーザーをXMPPサーバー(別名Jabberサーバー)にログインさせたままにすることを検討することをお勧めします。彼らがあなたのウェブサイトを去って戻ってこない場合に備えて、あなたはおそらくある種のタイムアウトを持ちたいでしょう。

JavaScript経由で接続する必要があるかどうかについては、なぜ接続できなかったのかわかりません。私はあなたがあなたにとって最も単純に見えるものは何でも行くことを提案します。その場合は、私が良いことを聞いているStropheをチェックすることをお勧めします。

私が広く使用している唯一のXMPPライブラリはヘッドストックですが、 PythonKamaeliaを使用する必要があります。

于 2009-05-11T12:41:01.437 に答える
0

これはhttpに固有の問題(または機能)です-永続的な接続はありません(実際にはそうではありません)。回避策が必要です。実際の解決策はありません。

javaまたはflashでそれを行うことができますが、それは本当にいいことではありません(javascript 4tw!)。

もう1つの可能性は、ブラウザとWebサーバー間の接続をWebサーバーとジャバーサーバー間の接続に変換する中間クライアントを作成することです。厄介ですが、可能です。

または、これを支援するAPIがあるかもしれません。

javascriptを介してjabberサーバーに直接接続する
場合、最新のajax-inventionsを使用した可能性がありますが、afaikは、source-htmlファイルの元のホストとのみ通信できます(greasmonkeyとアドオンは無視します)。異なるドメイン、異なるポート、期間はありません。あなたがあなたのjabberサーバーにあなたのchatpage-htmlをブラウザに提供する方法を教えるつもりでない限り、これは問題になるでしょう。さらに、マルチパート応答が必要になるため、接続を維持することもできません。それらはmozillaによってのみサポートされており、これが醜いアヒルの子COMETがそもそも存在する理由です。コメット自体は、データの転送中に接続を保持できないことを回避するための回避策です。

于 2009-05-11T12:45:37.837 に答える