Web ページに「サーバー プッシュ」のような動作を実装する最も簡単な方法は何ですか?
-
22-08-2019 - |
質問
Django サイト用に非常にシンプルな 2 人用のチャットルームを作成しようとしています。これを行うために AJAX を学んでいます。ユーザーの操作なしで Web ページの一部を更新する必要があります。
- ユーザー 1 がメッセージを送信すると、そのメッセージがユーザー 2 の画面に表示されるはずです
- ユーザー 1 がログオフすると、ユーザー 2 の画面でステータスが「オフライン」に変わるはずです。
これを実装する最も簡単な方法は何ですか?JavaScript を使用してサーバーを定期的にポーリングするだけですか?もしそうなら、これを行うためのベストプラクティスは何ですか?setInterval または setTimeout の使用に関する解決策をいくつか見つけましたが、これが最良の方法かどうかはわかりませんでした。
(リバース AJAX について読んだことがありますが、読んだところによると、これは実装がより複雑です。ソリューションが高速である必要も、スケーラブルである必要もありません。機能するために必要なだけです。)
解決
気にしないって言ったから 彗星, 確かに、これはあまり簡単ではありませんが、setInterval がうまくいきます。ただし、賢明に対処したいと考えています。おそらく 30 秒の間隔で開始する必要があります。ユーザーがチャットを開始すると、間隔は 5 に下がるはずです。アクションがどんどん減っていくのに気づくと、タイマーは再び 30 秒まで減少するはずです。スケーラビリティのコンベンションで賞を受賞することはありませんが、平均的な中規模の Web サイトでは十分に機能します。
このテクニックの詳細については、 この関連質問をチェックしてください.
他のヒント
周回するを活用してください。一見すると、それはあまりにも複雑であることについてぶつぶつ言う開始し、オーバー釉するためにあなたの目のために簡単ですが、あなたが通過し得れば、それはあなたの「ベストプラクティス」である、そしてなぜそれが迅速かつスケーラブルの両方が何であるかを理解しましょう。
また、自分はこれが優れた技術であることを認識見つけると、動的なWebページの挙動ののたくさんののために使用することができます。
ちょっと中途半端あなたを満たしているもう一つの選択肢は、 WebSyncオンデマンドの(または任意の他のホストされた彗星ですサービス...)他の人が存在するかどうかわかりません。これは、サーバー・プッシュ機能を実装してみましょう、しかし、あなたがする必要があるすべてはJavaScriptクライアントが含まれているので、作業を取得するにはいいと簡単ですよ。