Actualmente estoy trabajando en una versión web del sistema de chat. Cuando el usuario inicia sesión, el socket se conectará y el backend guardará el socket en este momento y luego se comunicará. Pero si la página web se actualiza en este punto, se perderá la conexión del socket. ¿Cómo puedo mantener el socket sin cambios incluso después de actualizar la página web?
export class SocketConnectionService { socket: io.Socket; constructor() { this.socket = io.io(`http://localhost:3000/`); //How to keep this.socket unchanged after refreshed } }mantenga this.socket sin cambios después de actualizar
Es imposible. No puede mantener la misma conexión de cliente socket.io o webSocket cuando la página se cambia o se actualiza. El navegador simplemente no hace eso. Cuando se carga una nueva página o se actualiza la página actual, el navegador cierra y libera todos los recursos de la página anterior, incluidas las conexiones socket.io/webSocket.
Por lo tanto, su servidor debe esperar una nueva conexión socket.io desde la página recién cargada. Si usa cookies o un objeto de sesión del lado del servidor, puede identificar, en el servidor, cuándo proviene una conexión de un cliente que ha visto anteriormente y el servidor puede actuar en consecuencia para darse cuenta de que este es solo un cliente anterior que se vuelve a conectar. en una nueva página.
Por lo tanto, podría restaurar la conexión al back-end con el uso de autenticación de token (por ejemplo, JWT de localStorage), aunque técnicamente será una instancia nueva independientemente.