与Angularjs的sockjs - 错误:INVALID_STATE_ERR

时间:2014-09-14 13:11:59

标签: javascript angularjs sockets sockjs

我正在尝试使用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);

这显然是一个黑客,我想知道我怎么能检测到sockjs何时准备好,以便我可以接听电话。

1 个答案:

答案 0 :(得分:3)

您应该使用setHandler方法并为'open'提供回调。在那里发送消息是安全的。该服务非常简单,实际上只是为了确保在摘要周期内调用三个SockJS客户端回调(onopenoncloseonmessage)。如果您愿意,您可以轻松地使用它来构建更复杂的服务,在许多可能的情况下:

  • 队列在套接字关闭时发送消息,并在打开时发送消息
  • 返回在套接字打开时解析的$q承诺