2016-09-20 9 views
0

私が知っている限り、ソケットの作成は一意のIDです。私のユーザーが部屋を作成し、その中に参加するようにユーザーを招待します。私は保存して部屋に参加したユーザーを保存することはできません。ユーザーがサーバーにアクセスしたときに、この参加をディスコネットに保存し、最新の参加ルームに自動的に参加しました。Nodejsは部屋に接続されたソケットを保存する

私はこの能力に関する解決策を見つけることができません。接続ごとにソケットが変更されたためです。

単純な解決策はありますか?事前に感謝します

答えて

1

ユーザーごとに何らかのユーザーIDを作成し、通常はCookieに保存する必要があります。次に、永続的なルームが必要な場合は、各ユーザーがどの部屋に入るかを追跡する独自のサーバー側のデータ構造を作成する必要があります。また、ユーザーを部屋に追加または削除するたびに、独自のデータ構造を使用して、その状態を適切に追跡します。

次に、ユーザーが接続すると、そのユーザーIDをCookieから取得し、データ構造を調べてその接続を確立する必要がある部屋を確認できます。次に、メモリ管理をチェックするために、あなたのデータ構造からのユーザーは何らかの非活動期間の後に永遠にそこにとどまることはありません。 (たぶん、あなたが最後に訪問した時のタイムスタンプ、そしてあなたはデータ構造を歩き回って、しばらく訪れていないユーザーを取り除くでしょう)。

この情報をサーバーの再起動後も有効にするには、ディスクに永続的に保存してから、起動時にその情報を再ロードする必要があります。アプリケーションの一部として既にデータベースを使用している場合は、データベースに情報を保存することもできます。そうでない場合は、内部データ構造をJSONのように頻繁にディスクに書き出して読み込むことができますサーバーの起動時に表示されます。

関連する問題