0

ここ数週間で、 HTML5 Websockets と node.js と socket.ioを使用して小さな通知システムを構築しました。 まだ解決していないことがいくつかあります。

node.js を使用したリアルタイム通知は、ブロックされていない i/o 操作のため、ロング ポーリングなどと比べて最適なパフォーマンス ソリューションであると読みました。

ここで、このユーザーを友人に通知する必要があるとします。「新しいiPhoneを買いました」みたいな。特定のユーザー1:nにリアルタイムで通知するようにnode.jsに教えるにはどうすればよいですか? 私はメッセージ1-1の通信しか送受信していないことを知っています。これは、最初に facebook api フレンドリストをチェックして、どの facebook_id がどの socket_id に接続されているかを調べる必要があることを意味します。次に、ユーザーが通知を受け取り、それを送信してデータベースに保存する場合は、ユーザーのプライバシー設定を確認します。

だから私には、これはどういうわけか最も効果的な解決策ではないようです...

現時点では、node.js に mongo-db ネイティブ ドライバーを使用し、サーバー側の JavaScript によって db 操作を実行します。フレンドリストを取得するには、まだ facebooks javascript sdk を実装する必要がありますが、ユーザーのプライバシー設定に問題があります。これはノンブロッキング I/O のすべての利点を台無しにしませんか?

これを実際にどのように解決しますか。私には、それは非常に複雑に思えます。

どうもありがとうございました。

4

1 に答える 1

3

友達リストなどをチェックするためにFacebookに行くべきではありません.それらをキャッシュする必要があります.ユーザーがログインしていると仮定すると、解決策は非常に簡単に思えます.

  1. ユーザーを取得します。
  2. 送信者が友人かどうかを確認する
  3. 受信者がメッセージを受け取りたいかどうかを確認します。

ところで、redis の方がはるかに高速です。

編集:ユーザーデータが更新されないことが心配で、それがキャッシュしない理由である場合は、Real-time Updatesを確認してください。

于 2012-09-03T20:51:57.147 に答える