2017-05-22 25 views
0

我得到一个错误有关的WebSocket错误:的JavaScript混得OnOpen事件

未能就“WebSocket的”执行“发送”:仍然处于连接状态。 是否有一个事件可以检查,以确保套接字完全连接,然后才能发送消息。

我的代码如下:

 this.contextWS = new WebSocket(socketAddress); 

     this.contextWS.onopen =() => { 
      console.log('Websocket is open !!!'); 
      this.contextWS.send('payload'); 
     } 

我在这里做一个明显的错误?

回答

1

MDN - WebSocket描述:

一个事件监听器被调用时,WebSocket连接的 readyState的改变打开;这表明连接是准备发送和接收数据的 。该事件很简单, 名称为“开放”。

我会使用的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

+0

感谢您的回复,我也阅读了MDN。我仍然不确定如何确保websocket完全连接。我看到onopen事件被解雇,我试图发送消息,那是当我看到错误。唯一的其他事件是看到的是onerror和onclose。这两者都不是我需要的东西 – reza

+0

onopen事件处理程序似乎是正确的地方。我一直以这种方式使用WebSockets。你能否更新你的示例代码并添加send()函数? –

+0

编辑完成后发送示例发送 – reza