【问题标题】:sockjs with Angularjs - Error: INVALID_STATE_ERR带有 Angularjs 的 sockjs - 错误:INVALID_STATE_ERR
【发布时间】:2014-11-08 03:04:20
【问题描述】:

我正在尝试 Angularjs 和 sockjs,我正在使用它来提供帮助:https://github.com/bendrucker/angular-sockjs

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

socket.send("test data");

我认为这是因为 Sockjs 还没有“准备好”。如果我将它包装在 $timeout 中,则如果延迟足够大,它就可以工作。 1000 个有效,100 个无效。

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

这显然是一个 hack,我想知道如何检测 sockjs 何时准备就绪,以便随后进行调用。

【问题讨论】:

    标签: javascript angularjs sockets sockjs


    【解决方案1】:

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

    • 套接字关闭时发送消息的队列,打开时发送消息
    • 返回一个$q 承诺,当套接字打开时解决

    【讨论】:

    • 干杯本 - 我确实解决了这个问题,但没有回答我自己的问题。
    • 我们如何在ng-stomp 中使用这个setHandler 方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多