Acerca de Webockets
Referencias:
Las necesidades de los usuarios suelen ser: quieren que las páginas web sean más interactivas. La solución es utilizar javascript.
Ajax es la abreviatura de Javascript asincrónico y XML, que permite a servidores y clientes remotos mantener los datos sincronizados. Pero XML no es necesario en este mecanismo. Sólo se utiliza como soporte para la transmisión de datos. De hecho, se suele utilizar JSON para transmitirlos (también llamado AJAJ).
La mayor ventaja de utilizar Ajax es que el cliente no necesita actualizar toda la página para intercambiar datos con el servidor, y este intercambio es transparente para el usuario.
Pero esto también crea un problema: dado que el cliente obtendrá activamente nuevos datos del servidor, ¿cómo sabe el cliente cuándo se actualizan los datos?
Durante los últimos 14 años (desde 2000), han surgido varias soluciones a este problema.
Las soluciones se presentan en cuatro formas principales:
En 1999, la especificación HTTP 1.1 proporcionó una característica que se puede utilizar para cualquier intercambio de datos HTTP, llamada actualizaciones HTTP.
Así es como funciona:
La mayor ventaja de la actualización HTTP es que se puede utilizar para cualquier intercambio de datos HTTP. La mayor ventaja de la actualización HTTP es que el protocolo especificado puede ser casi cualquier protocolo. Una vez completado el protocolo de enlace HTTP, se liberará la conexión HTTP anterior. En teoría, al utilizar la actualización HTTP, puede establecer cualquier conexión de socket TCP entre dos puntos finales (incluso conexiones de socket TCP full-duplex persistentes), y el protocolo que se ejecuta en la conexión puede ser diseñado por usted mismo.
Por supuesto, los navegadores no pueden empujar a los programadores cliente al abismo de la pila TCP y permitirles desarrollar sus propios protocolos para las actualizaciones HTTP. Por ello, organizaciones especializadas han desarrollado algunos protocolos, y WebSockets es uno de ellos.
El proceso de establecer una conexión WebSocket:
Hay muchos beneficios de utilizar el protocolo WebSocket, principalmente relacionados con su implementación:
Aunque el principio es complicado , hay una API existente y todo lo que tienes que hacer es crear tu propia aplicación sobre ella...
El protocolo WebSocket fue desarrollado por una organización especializada.
La API WebSocket se divide en API de cliente y API de servidor. La diferencia es simplemente el soporte para diferentes tareas.
Básicamente, no existen límites para lo que puede hacer con WebSockets, como aplicaciones de navegador y aplicaciones cliente en cualquier plataforma compatible. A continuación se muestran algunos usos típicos:
Al igual que el protocolo HTTP, WebSocket es una especificación o estándar de intercambio de información. Por lo tanto, en teoría, diferentes aplicaciones creadas con WebSockets pueden comunicarse entre sí independientemente de la plataforma o el tipo.
Debido a esto, la mayoría de las implementaciones de WebSocket se separan en herramientas del lado del cliente y del lado del servidor.
Javascript, por otro lado, sólo tiene la parte de herramienta del lado del cliente porque se utiliza como un script del lado del cliente.
A continuación, primero usamos las herramientas del cliente JavaScript para construir el cliente y luego pasamos al servidor Java (por supuesto, Java también tiene una API de cliente, pero el uso de Java para implementar el cliente se deja en manos de Android. .....).
El W3C estipula que la interfaz de soporte de WebSocket en los navegadores es una extensión de HTML5.
Entonces, aunque se utiliza Javascript para implementar la comunicación WebSocket, la interfaz WebSocket es en realidad parte de HTML5. Cualquier navegador puede implementar la comunicación WebSocket a través de la interfaz WebSocket. (En los primeros días de la comunicación Ajax, diferentes navegadores tenían diferentes clases y diferentes métodos para realizar solicitudes Ajax, lo cual era mucho más complicado de lo que es ahora)
A continuación se explica cómo configurar el cliente.
La API WebSocket se ha agregado desde Java EE7 y se puede encontrar en la especificación JSR 356.
Contiene API del lado del cliente y del lado del servidor.
La API del cliente es la API base: contiene las clases e interfaces básicas requeridas por los clientes WebSocket (en el paquete javax.websocket).
API del lado del servidor: se basa y amplía la API del lado del cliente (paquete javax.websocket.server).
Por lo tanto, la API Java WebSocket tiene dos componentes principales: API solo de cliente o API completa (API del lado del servidor).
Para obtener más información sobre el uso de la API, debe consultar la documentación de la API Java EE7.
A continuación presentaremos las dos partes de la API respectivamente.
Con respecto al límite en la cantidad de conexiones WebSocket en Tomcat, en realidad es la cantidad máxima de conexiones TCP:
Para alcanzar la cantidad máxima de conexiones websocket activas en Tomcat, se debe seguir lo siguiente Es necesario completar los cambios de configuración.
Cambie este valor de 50 a 65535.
Los cambios de configuración anteriores permiten ejecutar alrededor de 50.000 conexiones activas en una máquina Intel Core i5 de 2 GB, siempre que el servidor y el cliente se ejecuten en máquinas diferentes.
A continuación se muestran algunos intentos de limitar el número de conexiones:
/t/tomcat/users/132d14c1q0/achieve-large-number-of-concurrent-websocket-connections-40000- 50000
/rstoyanchev/spring-websocket- portfolio/issues/52
/discussions/problems/26648-websockets-max-concurrent-connections-request-queue-limit
/2013/10/10/ Escalar-a-12-millones-de-conexiones-concurrentes-cómo-lo-hicieron-los-datos-migratorios/práctica-clásica