2012-03-19 13 views
6

Non sono sicuro di come utilizzare una singola porta sul lato server simultaneamente per più socket. Come possiamo farlo in node.js. Attualmente sto usando socket.io e ho un socket per porta. Nel caso in cui le soluzioni non esistano ma è possibile, si prega di dare il vostro suggerimento per ottenere lo stesso. Anche quali problemi possono esserci se condividiamo una porta? Quali potrebbero essere altre opzioni correlate considerando la situazione in cui i client possono essere inutilizzati ma consumano una porta sul server poiché è necessario mantenere una connessione socket per ogni client?più socket che condividono una porta in node.js (tramite socket.io)

risposta

5

Assumendo che il server è in esecuzione sulla porta 80, qui è ciò che accade sotto:

  1. Server è in ascolto porta 80.
  2. Client1 si collega alla porta del server 80 dal suo porto 12345
  3. Server accetta la connessione del client1 richiede e assegna la porta 9876 in comune con client1.
  4. Server continua porta di ascolto 80.

Così, nonostante ciò che si pensa, la porta 80 non si consuma, si tratta di un ascoltatore. Il tuo computer ha probabilmente 50000 porte gratis, quindi non ci sono problemi.

FYI: le porte non possono essere condivise tra altri processi. È possibile condividere solo i processi figlio di Node, dare un'occhiata a come può essere: http://nodejs.org/docs/latest/api/cluster.html

+0

# 3 non è corretto. Il server (almeno con HTTP) non alloca porte aggiuntive per comunicare con il client. TCP consente più connessioni a una singola porta (80) a condizione che l'altra estremità di ciascuna connessione abbia una combinazione univoca di porta e IP (client1: 12345). – josh3736