WebSocket 重连后如何识别用户是不是原来的用户?

2021-03-17 18:49:56 +08:00
 wanlion

WebSocket 建立连接后会因为种种原因而失效, 为了能够正常连接, 前端 js 代码会自动重连, 但这就产生一个问题, 我们如何识别重连前后的用户是不是同一个用户?

有两个疑问:

1 WebSocket 本身会自带一个标识, 让后端能够自动识别重连前后的 socket 是同一个用户, 有这种情况存在吗?

2 前端 JS 代码设置一个标识, 让后端能够手动判断重连前后的 socket 是同一个用户, 可以这样做吗?

1792 次点击
所在节点    问与答
12 条回复
page470075640
2021-03-17 19:59:52 +08:00
重新走一遍验证流程就好了
2kCS5c0b0ITXE5k2
2021-03-17 20:01:03 +08:00
请求头不就好了。
2kCS5c0b0ITXE5k2
2021-03-17 20:03:40 +08:00
而且 websocket 不是也能用 cookie 这种吗?
phperstar
2021-03-17 20:19:00 +08:00
创建连接,不是可以携带请求数据吗?带上用户标识 id 就可以呀
theOneMe
2021-03-17 20:47:57 +08:00
websocket 重连会有一个协议升级的过程,是 http 的,可以在这里携带用户的信息
wanlion
2021-03-18 10:19:45 +08:00
@page470075640 这个太麻烦了
wanlion
2021-03-18 10:20:23 +08:00
@emeab 多谢提醒, 感觉 websocket 自动识别比较好
wanlion
2021-03-18 10:21:16 +08:00
@phperstar 之前有想到这个方法, 但总觉得有更好的方法, 所以就上来问问。
wanlion
2021-03-18 10:21:48 +08:00
@theOneMe 不明白升级是啥意思?
2kCS5c0b0ITXE5k2
2021-03-18 11:38:31 +08:00
@wanlion websocket 在握手的时候是先 HTTP 然后 WebSocket Upgrade. 然后才是 websocket 连接
具体可以看下 https://halfrost.com/websocket/
leon0903
2021-03-18 11:53:57 +08:00
@emeab
websocket 也能用 cookie ?  有文档吗?
2kCS5c0b0ITXE5k2
2021-03-18 12:03:49 +08:00
@leon0903 websocket 发 cookie 不就好了. cookie 是存在用户本地的啊.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX