我正在编写一个与 websocket 服务器通信的客户端。目前,套接字服务器将生成的“令牌”发送给客户端,然后客户端将其设置为存储:
localStorage.setItem('token', json.token);
并重定向到下一页,该页面在加载时运行以下代码:
token = localStorage.getItem('token')
console.log(token)
socket.send(JSON.stringify({"type": "getplayerinfo", "token": token}));
在执行console.log(token)时,我得到了令牌。但是,当通过套接字发送令牌时,我得到:
Uncaught DOMException: An attempt was made to use an object that is not, or is no longer, usable
我已经调试了三天了,伤透了我的脑筋。有什么建议吗?
当您在连接完全连接到服务器之前尝试通过 Websocket 连接发送某些内容时,通常会发生这种情况。因此,您应该做的是当服务器发送连接信号时运行代码,您可以使用事件侦听器“open”。在你的情况下,这将是:
const socket = new Websocket(url);
socket.addEventListener("open", (ev) => {
socket.send(JSON.stringify({"type": "getplayerinfo", "token": token}));
});