zsx

zsx

先作为主站备份 源站:https://my.toho.red

還是v2ex大神多,記一次遇到bug被大佬拯救

最近一直在研究一個項目(預計不久以後就會上線),由於存在客戶端長鏈接播報信息的情況,因此我便開始了解websocket。但在開發的過程中,遇到了一個相當離譜的問題:服務端死活無法發送消息給客戶端。使用的是socketio庫,原本以為這只是個很常見的bug,卻發現連續好幾天換了各種辦法也無法解決。

具體情況如下:

![2NA)G`@Q9@J$]1%DZA]XW1P.png]1

原計劃是當客戶端註冊成功後,服務端返回一個 token 給客戶端,同時綁定本次 token 對應的 sid。當有新的消息時,服務端將根據 token 查找 sid,並推送消息。

聽起來很容易是吧?但問題便出在這裡:無論用何種方法記錄 sid,都無法正確推送消息,客戶端毫無反應。在我試過各種解決方案後,我不得不放棄繼續折磨自己,將問題甩向 v2ex,希望有大佬能幫忙解決才不是因為偷懶

然而,就在今天,希望出現了:有某個大佬直接給出了解決代碼。總算解決了問題,我便開始研究思路。簡單看了一眼,發現我犯了一個非常大的錯誤:我從服務端獲取的 sid 是服務端的,我必須要先從客戶端獲取 sid,把 sid 傳給服務端,才能讓服務端定位客戶端並發送消息。

雖然是個低級錯誤,不過無論如何困擾了幾天的問題總算解決了,又能愉快寫 bug 了。只能說還是 v 友厲害,不過看起來我的代碼水平還有待提高,不然下次說不定就沒有那麼幸運能遇到願意幫忙的人了。

2022.7.14

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。