我收到的错误是:
无法执行'发送' on' WebSocket':仍处于连接状态。 是否有一个事件我可以检查以确保套接字完全连接后才能发送消息。
我的代码如下:
this.contextWS = new WebSocket(socketAddress);
this.contextWS.onopen = () => {
console.log('Websocket is open !!!');
this.contextWS.send('payload');
}
我在这里犯了一个明显的错误吗?
答案 0 :(得分:1)
MDN - WebSocket说明之后:
WebSocket连接时要调用的事件侦听器 readyState更改为OPEN;这表明连接是 准备发送和接收数据。这个活动很简单 名字“打开”。
我会使用 onerror 事件处理程序检查路上是否有错误..
contextWS.onerror = function (event) {
console.log(event.data);
};
...和 onclose 事件处理程序,以检查意外关闭连接的原因:
contextWS.onclose = function(event) {
if (event.code == 1000) {
console.log('WebSocket closed normally');
} else {
console.log('WebSocket closed unexpectedly: ' + event.code);
}
以下是所有可能结果代码的列表 - MDN CloseEvent
您可以尝试对消息进行排队,并在 readyState == 1 时发送消息。请参阅类似问题的答案 - proxy function