我正在尝试将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承诺