我正在尝试使用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何时准备好,以便我可以接听电话。
答案 0 :(得分:3)
您应该使用setHandler
方法并为'open'
提供回调。在那里发送消息是安全的。该服务非常简单,实际上只是为了确保在摘要周期内调用三个SockJS客户端回调(onopen
,onclose
,onmessage
)。如果您愿意,您可以轻松地使用它来构建更复杂的服务,在许多可能的情况下:
$q
承诺