2012-03-19 42 views
6

我不知道如何在服務器端同時使用一個單一的端口用於多個套接字。我們如何在node.js中做到這一點。我目前使用的是socket.io,並且每個端口都有一個套接字。如果解決方案不存在但可能,那麼也請給出您的建議,以實現相同。如果我們共享一個端口,那麼還有什麼問題呢?考慮到客戶端可能處於空閒狀態,但會佔用服務器端口,因爲我們需要爲每個客戶端維護一個套接字連接,其他相關選項可能是什麼?在node.js中共享一個端口的多個套接字(通過socket.io)

回答

5

假設你的服務器運行在80端口,這裏是下發生的:

  1. 服務器偵聽端口80
  2. 客戶端1從它的端口連接到服務器的80端口12345
  3. 服務器接受客戶端1的連接請求並分配端口9876與client1通信。
  4. 服務器繼續偵聽端口80

因此,儘管你的想法,80端口沒有被消耗,這是一個傾聽者。你的電腦可能有50000個免費端口,所以沒有問題。

僅供參考:端口不能在其他進程中共享。只有Node的子進程可以共享,看看它是如何可能的:http://nodejs.org/docs/latest/api/cluster.html

+0

#3不正確。服務器(至少使用HTTP)不會分配額外的端口來與客戶端進行通信。只要每個連接的另一端具有唯一的IP和端口(client1:12345)組合,TCP允許多個連接到單個端口(80)。 – josh3736 2013-10-03 14:31:37

相關問題