2017-05-20 17 views
0

私はsocket.io文書を読みましたが、それは貧弱です。 私はこのようないくつかの質問を持っている:部屋はどのようにsocket.ioで動作しますか?

  1. どのように私のような一つの部屋のプロパティを定義することができます:room.isPlayingroom.createdDate ...
  2. 部屋データストア?思い出に?その部屋に誰も残っていないと メモリが自動的に解放されますか?あまりにも多くの空の部屋が作成されている場合は、サーバーのメモリを消費します
  3. 今、私はルームのデータを格納し、空の部屋を処理するオブジェクトを使用しています: 誰も残っていないときに削除します。それはデフォルトの socket.ioの部屋を使用することと同じですか?私のような一つの部屋のプロパティを定義することができますどのよう

答えて

1

:room.isPlaying、room.createdDate

socket.ioは、各部屋のために公に利用可能なオブジェクトへのアクセスを提供していません。 部屋ごとに独自のオブジェクトを作成し、自分のMapオブジェクトに保存することができます。だから、部屋に誰かを追加するたびに、あなたのマップにルームオブジェクトがすでにあるかどうかを確認し、そうでない場合は作成します。その後、そのオブジェクトに部屋の状態を保つことができます。

客室のデータストアはどこですか?思い出に?その部屋に誰も残っていないとメモリは自動的に解放されますか?空き容量が多すぎるとサーバーメモリを消費するため、サーバーメモリを消費する可能性があります。

socket.ioには、特定の部屋の接続状況を記録した状態情報があります。その状態は文書化されていませんが、デバッガでソースコードやスタディの状態を調べ、すべてがどこに格納されているかを見つけることができます。例えば

io.nsps['/'].adapter.rooms 

は、その性質/名前空間内のすべてのアクティブなお部屋のリストですオブジェクトです。誰もがその部屋に残された後

Object.keys(io.nsps['/'].adapter.rooms) 

ウィルメモリはオートリリースになる: それとも、あなたはすべてのアクティブなお部屋の配列を取得するためにこれを使用することができますか?空き容量が多すぎるとサーバーメモリを消費するため、サーバーメモリを消費する可能性があります。

はい、メモリが空になると解放されます。

ここでは、部屋のデータを保存し、空の部屋を処理するためにオブジェクトを使用しています。デフォルトのsocket.io roomを使用する場合と同じですか?

socket.ioは、データをメモリに保持します。部屋が空になるときれいになります。

関連する問題