V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wanlion
V2EX  ›  问与答

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

  •  
  •   wanlion · 2021-03-17 18:49:56 +08:00 · 1758 次点击
    这是一个创建于 1345 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    有两个疑问:

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

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

    12 条回复    2021-03-18 12:03:49 +08:00
    page470075640
        1
    page470075640  
       2021-03-17 19:59:52 +08:00 via iPhone
    重新走一遍验证流程就好了
    2kCS5c0b0ITXE5k2
        2
    2kCS5c0b0ITXE5k2  
       2021-03-17 20:01:03 +08:00
    请求头不就好了。
    2kCS5c0b0ITXE5k2
        3
    2kCS5c0b0ITXE5k2  
       2021-03-17 20:03:40 +08:00
    而且 websocket 不是也能用 cookie 这种吗?
    phperstar
        4
    phperstar  
       2021-03-17 20:19:00 +08:00
    创建连接,不是可以携带请求数据吗?带上用户标识 id 就可以呀
    theOneMe
        5
    theOneMe  
       2021-03-17 20:47:57 +08:00
    websocket 重连会有一个协议升级的过程,是 http 的,可以在这里携带用户的信息
    wanlion
        6
    wanlion  
    OP
       2021-03-18 10:19:45 +08:00
    @page470075640 这个太麻烦了
    wanlion
        7
    wanlion  
    OP
       2021-03-18 10:20:23 +08:00
    @emeab 多谢提醒, 感觉 websocket 自动识别比较好
    wanlion
        8
    wanlion  
    OP
       2021-03-18 10:21:16 +08:00
    @phperstar 之前有想到这个方法, 但总觉得有更好的方法, 所以就上来问问。
    wanlion
        9
    wanlion  
    OP
       2021-03-18 10:21:48 +08:00
    @theOneMe 不明白升级是啥意思?
    2kCS5c0b0ITXE5k2
        10
    2kCS5c0b0ITXE5k2  
       2021-03-18 11:38:31 +08:00
    @wanlion websocket 在握手的时候是先 HTTP 然后 WebSocket Upgrade. 然后才是 websocket 连接
    具体可以看下 https://halfrost.com/websocket/
    leon0903
        11
    leon0903  
       2021-03-18 11:53:57 +08:00
    @emeab
    websocket 也能用 cookie ?  有文档吗?
    2kCS5c0b0ITXE5k2
        12
    2kCS5c0b0ITXE5k2  
       2021-03-18 12:03:49 +08:00
    @leon0903 websocket 发 cookie 不就好了. cookie 是存在用户本地的啊.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1603 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 16:57 · PVG 00:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.