未捕获的 DOMException:在访问可用的 var 时尝试使用不可用或不再可用的对象

问题描述 投票:0回答:1

我正在编写一个与 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

我已经调试了三天了,伤透了我的脑筋。有什么建议吗?

javascript websocket local-storage
1个回答
6
投票

当您在连接完全连接到服务器之前尝试通过 Websocket 连接发送某些内容时,通常会发生这种情况。因此,您应该做的是当服务器发送连接信号时运行代码,您可以使用事件侦听器“open”。在你的情况下,这将是:

const socket = new Websocket(url);
socket.addEventListener("open", (ev) => {
  socket.send(JSON.stringify({"type": "getplayerinfo", "token": token}));
  });

© www.soinside.com 2019 - 2024. All rights reserved.