socket.io 出现的WebSocket is closed before the connection is established

 

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编程必定要先判断端口,切记!
相关文章
相关标签/搜索