socket.io 出现的WebSocket is closed before th…

2018-06-24 01:29:59来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 

WebSocket is closed before the connection is established

最近socket.io是挺流行的,幼麟棋牌和一些好的开源项目也使用这个框架,在搭建其平台示例的出现这个错误,网上找了半天竟然没有找到解决办法,开始以为是版本socket.io版本问题,换了2.0一样,用telnet连接端口正常,但是客户端怎么都连接不上。
逐步进行分析,发现socket.io是非堵塞设计,竟然不判断端口已经打开,而且也没有输出对应log。这个和平时编程完全不同 。 因此,大家要注意了,不管你用listen还是初始化构造那里,你的端口被占用了,也不会导致异常,因此开发代码一定要做检测端口。
socket.io 打开的代码
Socket.prototype.open =
Socket.prototype.connect = function () {
  if (this.connected) return this;

  this.subEvents();
  this.io.open(); // ensure open
  if ('open' === this.io.readyState) this.onopen();
  this.emit('connecting');
  return this;
};
不是自己打开端口是这样readyState='opening',但是代码里面没处理,依然有返回。
幼麟棋牌用的是10000端口号,大家都觉得10000端口号,谁会去占用,开始一直没往这方面想,但是迅雷的服务ThunderPlatform.exe是占用10000端口的,呵呵,问题出来了,把ThunderPlatform.exe进程结束掉重启我们的程序就一切OK。

基本可以确定目前在socket.io编程一定要先判断端口,切记!
 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:浏览器内核趣对话

下一篇:js获取屏幕高度/浏览器高度