Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Todos los usuarios de websocket comparten uno?

¿Todos los usuarios de websocket comparten uno?

Sesión Websocket ***Disfrute de la solución (Opción 1)

Dado que la sesión Websocket no se puede serializar y luego almacenar directamente, si el usuario comienza a crear un enlace al Nodo A en el clúster en el momento de la solicitud, incluso si la sesión se inicia en el Nodo B, envía un mensaje push al usuario, que puede no funcionar (no probado).

Así que mi solución es utilizar la cola de suscripción para activar el retroceso de Websocket. Parece Session*** y lo disfruto. La idea es la siguiente:

Sesión Websocket*** Aprecia el diagrama de la idea y explica:

Módulo 1: Aquí no hay nada que explicar, porque cada usuario solo crea una sesión. Cuando el usuario vuelve a vincularse al segundo nodo, la sesión del primer nodo se cierra y se destruye. Y cada nodo utiliza variables miembro estáticas para almacenar (mapear) todas las sesiones de Websocket del nodo actual.

Módulo 2: dado que cada nodo almacena todas las sesiones de Websocket de cada nodo, solo necesita determinar si la sesión de WebSocket del usuario actual existe en el nodo actual y, de ser así, devolver el mensaje.

Módulo 3: cuando es necesario enviar un mensaje al usuario correspondiente a través de Websocket y no sabe en qué nodo se encuentra el usuario, suscríbase a MQ a través del módulo de programación de tareas y coloque el mensaje en MQ, y permita que cada nodo Todos los usuarios puedan recibir el mensaje y luego consulte el módulo 2 para determinar si el usuario actual tiene un nodo actual. Luego empuja con fuerza.

Sesión Websocket ***Disfrute de la solución (Opción 2)

De hecho, la razón por la que queremos disfrutar *** es en realidad porque en un entorno de clúster, en HA/Nginx y otras soluciones, que reducen la presión sobre los nodos mediante solicitudes de sondeo, lo que puede dar lugar a que los usuarios sean asignados a varios nodos. Entonces, si usamos reglas de valor hash como IP u otras reglas a las que se pueda hacer referencia. Resuelva el problema de que un usuario solo será asignado a un nodo y luego no habrá sesión *** para disfrutar. Existen muchos middlewares de este tipo. Como propuso nuestro "Dios paraguas", el "componente adhesivo de sesión Tengine" de Alibaba se puede utilizar para resolver el problema. Hay muchos otros.

Lenguaje Java (un lenguaje informático, especialmente utilizado para crear sitios web)

Conferencias

websocket

Implementación de sesiones de clúster* * * Compartido Método SpringSession Redis