4

PubNub を使用して、単純なリアルタイム メッセージを Web サーバーからクライアントにプッシュするためのシステムをセットアップしようとしています。Heroku で Django を実行しています。

特に、サーバーとクライアントの間でチャネルを確立する方法に興味があります。これには、2 つの間で一意のチャネル ID を共有する必要があります。

私たちのウェブサイトは一種のソーシャル ネットワーキング サイトです。一度に多数のユーザーがログインします。新しいメッセージや友達リクエストなどを受け取ったときに、更新を必要とせずにインターフェイスを更新する方法が必要なだけです。

何をすべきかはわかっていますが、私が知らないベスト プラクティスがいくつかあるのではないかと考えたので、フィードバックを得たいと思いました。

  1. ログイン時に、クライアントは API エンドポイントに投稿します
  2. この POST のハンドラー関数は、データベースにこのユーザーのチャネル ID レコードが既に存在するかどうかを確認します。
  3. その場合は、新しいチャネル ID (UUID) でレコードを更新します。そうでない場合は、このユーザーの ID とチャネル ID を使用して新しいレコードを作成します。
  4. チャンネル ID をユーザーに返します。
  5. ログアウトすると、このレコードは削除されます。

技術的には、これが REST の原則に違反しているのではないかと心配しています。API エンドポイントへの 1 回の呼び出しは、POST のようにサーバー側でデータを作成し、GET のようにクライアントにデータを返すように機能します。

関連するベスト プラクティスについてご意見をいただければ幸いです。ありがとう!

4

1 に答える 1

4

プッシャーを使用することでメリットが得られるようです。彼らは多かれ少なかれ事実上ホストされているWebSocketプロバイダーであり、クライアントに(ソケット付きのブラウザーを介して)Pusherにサブスクライブさせ、さまざまなチャネルでリッスンさせることができます。次に、単純なAPI呼び出しをPusherに送信します。これにより、接続されているすべてのクライアントにブロードキャストされます。

これは、AJAXを介してポーリングを実行したり、独自のWebSocketをロールバックしたりせずに、一度にログインした多くのクライアントへのリアルタイム更新を処理するための最良の方法です。

プッシャーを見てみることを強くお勧めします。(注として、彼らの無料利用枠は非常に寛大です。)

于 2012-08-15T19:55:23.860 に答える