我正在尝试将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客户端回调(onopen
,onclose
和onmessage
)。如果需要,您可以轻松地使用它来构建更复杂的服务,其中包括:
套接字关闭时,
$q
promise ,该 promise 在套接字打开时解析关于javascript - sockjs与Angularjs-错误: INVALID_STATE_ERR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25833618/