我正在尝试将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 方法并提供'open'的回调。在那发送消息是安全的。该服务非常轻巧,实际上仅用于确保在摘要循环内调用三个SockJS客户端回调(onopenoncloseonmessage)。如果需要,您可以轻松地使用它来构建更复杂的服务,其中包括:

套接字关闭时,

  • 将发送的消息排队;打开套接字时,
  • 发送消息
  • 返回一个$q promise ,该 promise 在套接字打开时解析
  • 关于javascript - sockjs与Angularjs-错误: INVALID_STATE_ERR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25833618/

    10-10 13:37