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編程必定要先判斷端口,切記!
相關文章
相關標籤/搜索