ジャンゴでのチャット要求のためのクライアントのポーリング(AJAXを逆に)?
-
22-09-2019 - |
質問
私は、サイト上で1人のユーザーが私のDjangoのサイト上で他のユーザーを要求チャットできるようにそれを作りたいです。私が言うことを要請者がリアルタイムボックスを取得したい:「?あなたがチャットしたいですか」
どのように次のクライアントポーリング方式の音はありません
USER1クリックusers2ニックネームに、データベース内の型CHAT_REQUESTのメッセージを作成するいくつかの/メッセージ/リクエストにPOST要求を生成します。一方、User2のブラウザでJavascriptの作品は、繰り返しメッセージの更新をサーバーに照会します。それはタイプCHAT_REQUESTのメッセージを受信した場合には、ポップアップ...
を開きますこのアプローチの問題は、データベースへのアクセスのようです。
クライアントは、ポーリングごとに10秒で、100人のユーザーがブラウザのウィンドウが開いたままにすると、は、それは秒あたり10データベース要求されます。
でしょうが、ないデータベースではなく、DjangoのRAMやセッション情報でこれらのメッセージを格納する方が良いですか?それとも、このデータベース・テーブルは、PostgreSQLとのRAM、および検索の高速にキャッシュされます?
解決
このため、データベースのテーブルには、あなたが言ったように、サーバーに負荷をかけることになりますが、あなたが何らかの理由でこれらの要求の記録を保持したい場合に便利かもしれません。
memcachedのかAMQPサーバはあなたを与える可能性がより高いパフォーマンスのようなものを使用します。あなたのようなあなたも、このような東京キャビネット/東京タイラントとしてより高性能なキーと値のストアを使用することができます。
他のヒント
私はあなたがサーバーのパフォーマンスと帯域幅の使用を心配している場合。
「のようなAJAX」の代わりに、通信「のようなCOMET」を見てくださいところで、 Redisののルックスは非常によく、メモリ内のデータ構造のようなものを処理するために適しています。