我和 WebSocket 的那些事(一)
我的策劃大佬離職了,在他go之前我都沒有解決好一個問題,感覺如果我換了工作面試的時候,別人問到 “你在做項目的時候,遇到的最頭疼的問題是什麽,是怎麽解決的?”,首先想到的應該也是他,今天感覺是時候寫點東西了。
做 PMGO 的時候,濤哥提出想要用瀏覽器的桌面推送,來替代 hx 的提醒,最早提出WebSocket的想法的,其實不是我們組,別的組也有用了,但沒法借鑒,大佬們都是Node.js實現的,用Nginx做反向代理來部署它,我只有 IIS,.Net 支持 WebSocket 貌似也不是太久遠的事,當時考慮用,也沒有多少能借鑒的,後來在 Github 上找到了 Fleck( https://github.com/statianzo/Fleck ),雖然不是fork最多的,但用起來是最方便的,對於內部系統來說,在不考慮最大連接數的問題下,它相當的好用(並不是說它不支持而是有一些問題,參考 issue)
代碼寫出來了,感覺十分的精致,然後我們就上線了。
正式服更新後還是很穩定的,然後我們打算在此基礎上做叠代看板的實時更新。大約一個月後,測試服的WebSocket報了個異常,“當前端口被占用”,我一開始認為是更新測試服時,客戶端與服務端的連接沒有及時斷開,端口資源被強占的情況下無法再次使用相同的端口做服務,因此我等了一下嘗試打開服務,可以成功啟動,不了了之。就在這個問題被我忽視了又一個月後,盡管在此期間出現了少量的端口占用錯誤,這一次,服務再也啟動不了了,不管等了多久。
我申請連服務器,找到占用端口的進程id,用pid去任務管理器找對應的進程,沒有找到。tasklist|findstr 找到對應端口的進程狀態,找到了一大堆 TIME-WAIT 進程,對應的那個pid就是剛才找到的。無奈內網無法截圖留念,我一定會珍藏它......
查看了他的issue,有個作者提到連接瓶頸,但貌似是ssl證書的問題,於是乎我在這個坑上摔倒了......
我和 WebSocket 的那些事(一)