2012-03-19 40 views
6

複数のソケットに対して同時にサーバー側で1つのポートを使用する方法がわかりません。 node.jsでどうすればいいですか?私は現在socket.ioを使用しており、ポートごとに1つのソケットを持っています。ソリューションが存在しないが可能な場合は、同じことを達成するための提案もお願いします。また、ポートを共有すると、どのような問題が発生する可能性がありますか?クライアントがアイドル状態になる可能性はあるものの、クライアントごとにソケット接続を維持する必要があるため、サーバー上のポートを消費する状況を考慮して、他の関連オプションを設定することはできますか?ここでは、サーバーがポート80で実行されていると仮定すると、複数のソケットがnode.jsのポートを(socket.io経由で)共有しています

答えて

5

は下に何が起こるかです:

  1. Serverがポート80
  2. はClient1が12345
  3. ServerはCLIENT1の接続を受け入れ、そのポートからサーバーのポート80に接続をリッスンクライアント98との通信を要求し、ポート9876を割り当てます。
  4. あなたはどう思うかにもかかわらず、ポート80が消費されていないサーバーがポート80

を聴き続けだから、それはリスナーです。お使いのコンピュータにはおそらく50000個のポートがあり、問題はありません。

FYI:ポートは他のプロセス間で共有できません。ノードの子プロセスのみが共有できる方法を見てください。http://nodejs.org/docs/latest/api/cluster.html

+0

#3が間違っています。サーバー(少なくともHTTPを使用)は、クライアントと通信するために追加のポートを割り当てません。 TCPは、各接続のもう一方の端が一意のIPとポート(client1:12345)の組み合わせを持つ限り、単一のポート(80)への複数の接続を許可します。 – josh3736

関連する問題