还是v2ex大神多,记一次遇到bug被大佬拯救


最近一直在研究一个项目(预计不久以后就会上线),由于存在客户端长链接播报信息的情况,因此我便开始了解websocket。但在开发的过程中,遇到了一个相当离谱的问题:服务端死活无法发送消息给客户端。使用的是socketio库,原本以为这只是个很常见的bug,却发现连续好几天换了各种办法也无法解决。

具体情况如下:

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

原计划是当客户端注册成功后,服务端返回一个token给客户端,同时绑定本次token对应的sid。当有新的消息时,服务端将根据token查找sid,并推送消息。

听起来很容易是吧?但问题便出在这里:无论用何种方法记录sid,都无法正确推送消息,客户端毫无反应。在我试过各种解决方案后,我不得不放弃继续折磨自己,将问题甩向v2ex,希望有大佬能帮忙解决才不是因为偷懒

然而,就在今天,希望出现了:有某个大佬直接给出了解决代码。总算解决了问题,我便开始研究思路。简单看了一眼,发现我犯了一个非常大的错误:我从服务端获取的sid是服务端的,我必须要先从客户端获取sid,把sid传给服务端,才能让服务端定位客户端并发送消息。

虽然是个低级错误,不过无论如何困扰了几天的问题总算解决了,又能愉快写bug了。只能说还是v友厉害,不过看起来我的代码水平还有待提高,不然下次说不定就没有那么幸运能遇到愿意帮忙的人了。

2022.7.14

声明:西行妖|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 还是v2ex大神多,记一次遇到bug被大佬拯救


不必怀念我,等我走后,你们就是我