ws如何捕获:WebSocket连接到' ws://失败:连接建立错误:net :: ERR_CONNECTION_REFUSED

时间:2016-07-30 03:14:47

标签: html5 websocket

我有简单的网络套接字html5,当服务器启动时,每件事情都工作正常 问题是当我关闭服务器(用于测试) 我得到了:

WebSocket connection to 'ws://127.0.0.1:7777/api' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

我无法抓住它永远不会跳到错误或关闭此错误

init: function () {
           this.m_wsiSendBinary = new WebSocket("ws://127.0.0.1:7681/wsapi");

           this.m_wsiSendBinary.onopen = function(evt) {
               cc.log("Send Binary WS was opened.");
           };

           this.m_wsiSendBinary.onmessage = (function(evt) {


               this.handleServerResponse(yStr);


           this.m_wsiSendBinary.onerror = function(evt) {

           };

           this.m_wsiSendBinary.onclose = function(evt) {
               cc.log("m_wsiSendBinary websocket instance closed.");
               self.m_wsiSendBinary = null;
           };

}).bind(this);

1 个答案:

答案 0 :(得分:0)

我没有完整的答案,但是我处理了类似的问题,并且有部分但不太优雅的解决方案(但可能会对某人有所帮助)。不幸的是,没有消除错误消息。

两个业务要求:

  • BR1-当服务器不可用时处理初始化状态。
  • BR2-服务器停止时处理状态。

BR1的解决方案

var global_connection_openned=null;//Here you have the result
init: function () {
       global_connection_openned=false;
       this.m_wsiSendBinary = new WebSocket("ws://127.0.0.1:7681/wsapi");
       this.m_wsiSendBinary.onopen = function(evt)
          {
             global_connection_openned=true;
          };

BR2的解决方案(假设为BR1)

//somewhere in your project called by setInterval(..) which will detect the connection is lost (and tries to reestablish/reopen the connetion.
{
  if (this.m_wsiSendBinary==null || this.m_wsiSendBinary.readyState==3)
    this.init();

  if (!global_connection_openned)
    this.m_wsiSendBinary=null;
}

无论如何,如果这个用例有可靠的解决方案,我会很好奇。