socket ejemplo websocket spring-websocket

ejemplo - ¿Debo usar WebSocket en puertos que no sean 80?



websocket php y html5 (2)

¿Debo usar WebSocket en puertos que no sean 80? ¿Arruina todo el propósito de usar las infraestructuras web / HTTP existentes? Y creo que ya no se ajusta al nombre de Web Socket en puertos que no son 80.

Si uso WebSocket en otros puertos, ¿por qué no usar TCP directamente? ¿O hay algún beneficio especial en el protocolo WebSocket?

Y dado que el protocolo de enlace actual de WebSocket tiene la forma de una solicitud de ACTUALIZACIÓN HTTP, ¿significa que tengo que habilitar el protocolo HTTP en el puerto para poder realizar el protocolo de enlace de WebSocket?


¿Debo usar WebSocket en puertos que no sean 80? ¿Arruina todo el propósito de usar las infraestructuras web / HTTP existentes? Y creo que ya no se ajusta al nombre WebSocket en puertos que no son 80.

Puede ejecutar un servidor webSocket en cualquier puerto que permita su sistema operativo host y al que su cliente podrá conectarse.

Sin embargo, hay una serie de ventajas al ejecutarlo en el puerto 80 (o 443).

  1. La infraestructura de red generalmente ya está implementada y abierta en el puerto 80 para conexiones salientes desde los lugares donde viven los clientes (como computadoras de escritorio, dispositivos móviles, etc.) a los lugares donde viven los servidores (como centros de datos). Por lo tanto, generalmente no se requieren nuevos agujeros en las configuraciones de firewall o enrutador, etc. para implementar una aplicación webSocket en el puerto 80. Es posible que se requieran cambios de configuración para ejecutarse en diferentes puertos. Por ejemplo, muchas redes corporativas grandes son muy exigentes con respecto a los puertos en los que se pueden establecer conexiones salientes y están configuradas solo para ciertos comportamientos estándar y esperados. Puede que no esté permitido elegir un puerto no estándar para una conexión webSocket desde algunas redes corporativas. Esta es la GRAN razón para usar el puerto 80 (máxima interoperabilidad de redes privadas que tienen configuraciones bloqueadas).

  2. Muchas aplicaciones webSocket que se ejecutan desde el navegador desean aprovechar la infraestructura de seguridad / inicio de sesión / autenticación existente que ya se está utilizando en el puerto 80 para la página web del host. Usar esa misma infraestructura para verificar la autenticación de una conexión webSocket puede ser más simple si todo está en el mismo puerto.

  3. Algunas infraestructuras de servidor para webSockets (como socket.io en node.js) utilizan una infraestructura de servidor combinada (proceso único, un agente de escucha) para admitir solicitudes HTTP y webSockets. Esto es más simple si ambos están en el mismo puerto.

Si uso WebSocket en otros puertos, ¿por qué no usar TCP directamente? ¿O hay algún beneficio especial en el protocolo WebSocket?

El protocolo webSocket se definió originalmente para funcionar desde un navegador a un servidor. No hay acceso TCP genérico desde un navegador, por lo que si desea un socket persistente sin complementos de navegador personalizados, entonces se ofrece un WebSocket. En comparación con una conexión TCP simple, el protocolo webSocket ofrece la capacidad de aprovechar la autenticación HTTP y las cookies, una forma estándar de hacer ping / pong de nivel de aplicación y mantener vivo el nivel de aplicación (TCP ofrece mantener vivo el nivel de salto , pero no de principio a fin), un protocolo de trama integrado (tendría que diseñar sus propios formatos de paquetes en TCP) y muchas bibliotecas que admiten estas características de nivel superior. Básicamente, webSocket funciona a un nivel más alto que TCP (usando TCP debajo de las cubiertas) y ofrece más funciones integradas que la mayoría de las personas encuentran útiles. Por ejemplo, si usa TCP, una de las primeras cosas que debe hacer es obtener o diseñar un protocolo (un medio para expresar sus datos). Esto ya está integrado con webSocket.

Y dado que el protocolo de enlace actual de WebSocket tiene la forma de una solicitud de ACTUALIZACIÓN HTTP, ¿significa que tengo que habilitar el protocolo HTTP en el puerto para poder realizar el protocolo de enlace de WebSocket?

DEBE tener un servidor HTTP ejecutándose en el puerto en el que desea usar webSocket porque todas las solicitudes de webSocket comienzan con una solicitud HTTP. No tendría que ser un servidor HTTP con muchas funciones, pero sí debe manejar la solicitud HTTP inicial.


En mi opinión, sí puedes. 80 es el puerto predeterminado, pero puede cambiarlo por el que desee.