4

Django サイト用に非常にシンプルな 2 人のチャットルームを作ろうとしています。これを行うためにAJAXを学んでいます。ユーザーの操作なしで Web ページの一部を更新する必要があります。

  • ユーザー 1 がメッセージを送信すると、そのメッセージはユーザー 2 の画面に表示されます。
  • ユーザー 1 がログオフすると、ユーザー 2 の画面でステータスが「オフライン」に変わります。

これを実装する最も簡単な方法は何ですか? JavaScript を使用して定期的にサーバーをポーリングするだけですか? もしそうなら、これを行うためのベストプラクティスは何ですか? setInterval または setTimeout の使用に関するいくつかの解決策を見つけましたが、これが最善の方法であるかどうかはわかりませんでした。

(私はリバース AJAX について読んだことがありますが、私が読んだことから、これは実装がより複雑です。ソリューションが高速またはスケーラブルである必要はありません。機能する必要があるだけです。)

4

3 に答える 3

3

あなたはCometを気にしないと言ったので、これは確かに簡単に始めることはできませんが、 setInterval がそのトリックを行います。しかし、あなたはそれについて賢くなりたいです。おそらく、30 秒間隔で開始する必要があります。ユーザーがチャットを開始した場合、間隔は 5 に減少する必要があります。アクションの減少に気付くと、タイマーは再び 30 秒に減少する必要があります。スケーラビリティ コンベンションで賞を受賞することはありませんが、平均的な中規模の Web サイトでは実現できます。

この手法の詳細については、この関連する質問を確認してください

于 2009-05-17T00:48:55.713 に答える
2

Orbitedを活用してください。一見しただけでは、あまりにも複雑すぎて目が回ってしまい、複雑すぎるとつぶやき始めるのは簡単ですが、一度理解してしまえば、「ベスト プラクティス」とは何か、そしてなぜそれが高速でスケーラブルなのかを理解できるようになります。

また、これが優れた手法であり、多くの動的な Web ページの動作に使用できることに気付くでしょう。

于 2009-05-17T00:49:34.653 に答える
0

途中で出会うもう1つのオプションは、WebSyncオンデマンド(または他のホストされたコメットサービス...他にあるかどうかはわかりません)です。サーバープッシュ機能を実装できますが、必要なのはjavascriptクライアントを含めるだけなので、簡単に機能します。

于 2010-02-11T19:39:59.313 に答える