1

node.js、express、socket.ioを使用して小さなアプリを作成しようとしています。これには、基本的な社会的関係の処理が含まれます。複数のユーザーがいます。友達になるようにリクエストしたり、これらのリクエストを受け入れたり、拒否したり、ユーザーの友達を解除したりできます。基本的には、Facebookとよく似ています。ユーザーAがログインしていて、ユーザーBが彼との友情を要求した場合、ユーザーAに友人の要求についてすぐに通知してもらいたいです。これがWebSocket(および混乱)の出番です。

  1. 各ユーザーは、3つのデータ収集に対応する3つの異なるソケット接続を持っていますか?(1)友達、(2)受信したリクエスト、(3)送信したリクエスト

  2. ユーザーが受信したリクエストを受け入れると、他のユーザーは自分の送信されたリクエストが受け入れられたことを通知される必要があります。これには、他のユーザーのソケットでイベントをトリガーする必要がありますか?ユーザーがオンラインではないためにそのソケットが存在しない場合はどうなりますか?

混乱が生じた場合はお詫びしますが、ソケット間の関係を概念化する方法を理解するのに苦労しています。

4

2 に答える 2

1

各ソケットをオブジェクトとして設定し、そのソケットは特定のユーザーデータに対応します。オブジェクトやその他の構造化データに慣れていない場合、これは非常に重要であり、それなしではそれほど遠くまで行くことはできません。

配列に各ユーザーIDを含むusersというオブジェクトがあり、友人やリクエストなどの配列を含むIDごとに各ユーザー情報を保持します。

データはサーバー側で保持されているため、クライアント側のユーザーがソケットを閉じても、データはすでに変数に渡され、サーバー側に保存されています。


これを完全にノードで行うには、慣れていない場合はかなりの労力がかかります。最初にmysqlデータベースを使用してアプリを構築し、次にアプリ内にデータを保持することを試してみます。

于 2012-07-27T04:18:28.433 に答える
1

「パブリッシュ/サブスクライブパターン」(「pubsub」)を読むと、これらすべて(前の回答を含む)が非常に明確になります。このパターンの重要な側面は次のとおりです。

1)あなたには、他の人が興味を持つかもしれない「何か言うこと」を持っている「人」(「話者」)がいます。

2)あなたには、他の「人」にそれぞれ「聞きたい」「人」(「聞き手」)がいます(ただし、だれかだけに耳を傾けることはめったにありません。ほとんどの人は、耳を傾ける人を選択します。圧倒する)。

パブリッシュ/サブスクライブパターンは、トーカーがリスナーを追跡する必要がなく、リスナーがどのトーカーを追跡する必要がないように、トーカーをリスナーに「接続」する方法を記述します。彼らは耳を傾けることに決めました(つまり、みんなが話しているのを「聞く」必要はなく、興味のあるものにラッカスをフィルタリングしようとする必要はありません)。

MagicDevが指摘したように、これには通常、データ部分が誰がどの話者を聞いているかを追跡し、そのメソッドによって話者が「この主題について話している」(「公開」)と言うことができ、リスナーが「私は(話者のリスト、または「誰か」)が特定の主題(「任意の主題」である可能性があります)について話しているときに通知を受け取りたい。

「友人関係」とは、一般に、「人」Aが「聞き手」として「人」Bに対して「話し手」になること、およびその逆を意味します。ただし、pubsubパターンには、この種の対称性を要求するものはありません。優れた実装では、同じ方法を使用して「ブロードキャスト」と「会話」を確立できます。

于 2012-07-27T08:01:08.720 に答える