具體情況如下:
![2NA)G`@Q9@J$]1%DZA]XW1P.png]1
原計劃是當客戶端註冊成功後,服務端返回一個 token 給客戶端,同時綁定本次 token 對應的 sid。當有新的消息時,服務端將根據 token 查找 sid,並推送消息。
聽起來很容易是吧?但問題便出在這裡:無論用何種方法記錄 sid,都無法正確推送消息,客戶端毫無反應。在我試過各種解決方案後,我不得不放棄繼續折磨自己,將問題甩向 v2ex,希望有大佬能幫忙解決才不是因為偷懶。
然而,就在今天,希望出現了:有某個大佬直接給出了解決代碼。總算解決了問題,我便開始研究思路。簡單看了一眼,發現我犯了一個非常大的錯誤:我從服務端獲取的 sid 是服務端的,我必須要先從客戶端獲取 sid,把 sid 傳給服務端,才能讓服務端定位客戶端並發送消息。
雖然是個低級錯誤,不過無論如何困擾了幾天的問題總算解決了,又能愉快寫 bug 了。只能說還是 v 友厲害,不過看起來我的代碼水平還有待提高,不然下次說不定就沒有那麼幸運能遇到願意幫忙的人了。
2022.7.14