Estoy escribiendo un cliente que se comunica con un servidor websocket. Actualmente, el servidor de socket envía un "token" generado al cliente, que luego lo almacena con:
localStorage.setItem('token', json.token);Y redirige a la página siguiente, que al cargar ejecuta este código:
token = localStorage.getItem('token') console.log(token) socket.send(JSON.stringify({"type": "getplayerinfo", "token": token}));Al hacer console.log (token), obtengo el token. Sin embargo, cuando envío el token a través del socket, obtengo:
Uncaught DOMException: An attempt was made to use an object that is not, or is no longer, usableHe estado depurando esto durante 3 días y me he destrozado el cerebro. ¿Algun consejo?
Esto normalmente sucede cuando intenta enviar algo a través de una conexión websocket antes de que la conexión se haya conectado completamente al servidor. Entonces, lo que debe hacer es ejecutar el código cuando el servidor envía una señal conectada que puede usar el detector de eventos "abrir". En tu caso esto sería:
const socket = new Websocket(url); socket.addEventListener("add", (ev) => { socket.send(JSON.stringify({"type": "getplayerinfo", "token": token})); });