javascript-带有Angularjs的sockjs-错误:INVALID_STATE_ERR

我正在尝试将sockjs与Angularjs配合使用,以帮助您:https://github.com/bendrucker/angular-sockjs

我想在页面加载时通过sockjs发送一些数据,但是在尝试进行以下调用时,客户端出现错误:INVALID_STATE_ERR:

socket.send("test data");

我认为这是因为Sockjs尚未“就绪”.如果我将它包装在$timeout中,则在延迟足够大的情况下可以工作. 1000可以,但是100不能.

$timeout(function() {
  socket.send("test");
}, 1000);

显然这是一个hack,我想知道如何才能检测到sockjs准备就绪,以便随后进行呼叫.

解决方法:

您应该使用setHandler方法并为“打开”提供回调.在那发送消息会很安全.该服务非常轻巧,实际上仅用于确保在摘要循环内调用三个SockJS客户端回调(onopen,onclose,onmessage).如果需要,您可以轻松地使用它来构建更复杂的服务,其中包括:

>在套接字关闭时将已发送的消息排队,并在套接字打开时将其发送
>返回套接字打开时解析的$q承诺

上一篇:Vue--运行项目发送http://localhost:8080/sockjs-node/info请求报错,造成浏览器不能热更新


下一篇:java – convertAndSendToUser中的“user”来自哪里可以在SockJS Spring Websocket中使用?