2012-03-19 19 views
6

No estoy seguro de cómo usar un único puerto en el servidor simultáneamente para múltiples sockets. ¿Cómo podemos hacerlo en node.js. Actualmente estoy usando socket.io y tengo un socket por puerto. En caso de que las soluciones no existan pero es posible, también por favor brinde su sugerencia para lograr lo mismo. Además, ¿qué problemas puede haber si compartimos un puerto? ¿Cuáles podrían ser otras opciones relacionadas considerando la situación de que los clientes pueden estar inactivos pero consumirán un puerto en el servidor ya que necesitamos mantener una conexión de socket para cada cliente?sockets múltiples que comparten un puerto en node.js (a través de socket.io)

Respuesta

5

Asumiendo que su servidor se está ejecutando en el puerto 80, esto es lo que sucede debajo:

  1. Server escucha el puerto 80.
  2. Cliente1 se conecta al puerto del servidor 80 desde su puerto 12345
  3. servidor acepta la conexión de cliente1 solicita y asigna el puerto 9876 para comunicarse con el cliente1.
  4. Server continúa puerto de escucha 80.

Así que a pesar de lo que piensa, el puerto 80 no se consume, es un oyente. Su computadora probablemente tiene 50000 puertos gratis, por lo que no hay problema.

FYI: Los puertos no se pueden compartir entre otros procesos. Solo se pueden compartir procesos secundarios de Node, eche un vistazo a cómo puede ser: http://nodejs.org/docs/latest/api/cluster.html

+0

# 3 es incorrecto. El servidor (al menos con HTTP) no asigna puertos adicionales para comunicarse con el cliente. TCP permite múltiples conexiones a un solo puerto (80) siempre que el otro extremo de cada conexión tenga una combinación única de IP y puerto (cliente1: 12345). – josh3736

Cuestiones relacionadas