V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gdfsjunjun
V2EX  ›  程序员

有哪些基于 Websocket 扫码登录的案例?为什么不常见?

  •  
  •   gdfsjunjun · 2020-11-23 15:26:09 +08:00 · 3574 次点击
    这是一个创建于 1243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微信扫码登录采用的是 Ajax 轮询,但是完全没有找到过基于 Websocket 扫码登录的现实案例,为什么这个技术没人用在扫码登录上?明明这样响应速度更快,难道是有什么缺点?

    30 条回复    2020-11-24 14:13:53 +08:00
    xuanbg
        1
    xuanbg  
       2020-11-23 15:32:42 +08:00   ❤️ 1
    响应速度更快能快多少?没有利益的事情是没人会干的。
    DoctorCat
        2
    DoctorCat  
       2020-11-23 15:37:01 +08:00
    架构上的 tradeoff,轮询不用保持长链接,意味着服务端可以随时切换,体验上更好
    yaocai321
        3
    yaocai321  
       2020-11-23 15:39:19 +08:00   ❤️ 5
    Websocket 响应更快, 你怎么不说账号密码登录更快.
    个人认为扫码登录就是为了提高 App 日活的脑瘫设计.
    kop1989
        4
    kop1989  
       2020-11-23 15:40:24 +08:00   ❤️ 1
    我认为主要的问题就是开发成本高。
    对于普通的 web 应用场景而言(甚至包括 web 版微信聊天),长轮询甚至轮询就已经够用了。
    采用 websocket,软件工程上不划算。
    photon006
        5
    photon006  
       2020-11-23 15:52:24 +08:00
    钉钉算不算常见,可能 linux 用户不常见
    linxl
        6
    linxl  
       2020-11-23 15:56:24 +08:00
    因为够用了
    acmore
        7
    acmore  
       2020-11-23 16:03:09 +08:00
    开销大,需要维持状态不灵活。
    实现起来也比一来一回更麻烦。
    gdfsjunjun
        8
    gdfsjunjun  
    OP
       2020-11-23 16:23:20 +08:00
    qwertyzzz
        9
    qwertyzzz  
       2020-11-23 16:25:20 +08:00
    我也发现了
    mebtte
        10
    mebtte  
       2020-11-23 16:28:57 +08:00
    同样的效果, http 轮询比 websocket 开发简单, 消耗更少的服务器资源
    abersheeran
        11
    abersheeran  
       2020-11-23 16:29:35 +08:00
    陈年架构,如果没有非换不可的原因不会换的。HTTP 这一套很成熟了,要说服人去换 WebSocket,只有一种可能——你是新上任的技术管理层,为了表现,让手下的码农去换技术实现。
    Xusually
        12
    Xusually  
       2020-11-23 16:30:06 +08:00
    显示出二维码后,用户掏出 iPhone 12,打开微信,有信号没网,飞行模式一下,15s 后有信号了,主卡卡住,换副卡,好嘛。。。1 分钟过去了,websocket 这链接就一直占用着。。。
    gzlock
        13
    gzlock  
       2020-11-23 16:35:33 +08:00 via iPhone
    @Xusually 你在手机上没用过 WiFi ?
    gdfsjunjun
        14
    gdfsjunjun  
    OP
       2020-11-23 16:45:03 +08:00
    @yaocai321 确实扫码比较反人类,本来是不想使用手机才在电脑登录,现在还要拿手机扫。
    也不是说扫码就一无是处,反正我在公用电脑登录都是无痕模式+扫码,这样浏览器根本不可能记住我的密码,感觉要安全些。
    而且扫码不是对那些老一辈的基本上没接触电脑的更友好一些吗?打字速度非常慢,还不如直接扫码简单快捷。
    gdfsjunjun
        15
    gdfsjunjun  
    OP
       2020-11-23 16:46:43 +08:00
    @abersheeran 2333,你想多了,学生而已,最近对 Websocket 感兴趣,先看看有哪些现实案例,如果运用广泛我就去学一下了,现在看来似乎这个技术并没太大用处。
    laravel
        16
    laravel  
       2020-11-23 16:47:27 +08:00
    因为没必要啊,同时登陆的用户能有几个? long polling 足够了,并不是所有浏览器都支持 websocket
    chendy
        17
    chendy  
       2020-11-23 16:49:20 +08:00
    只要轮询满足需求,就不用 ws
    实现复杂度和运行成本根本不在一个量级
    whywhywhy
        18
    whywhywhy  
       2020-11-23 16:49:58 +08:00   ❤️ 1
    = =!

    以前一水的觉得 ws 好,各种高大上,要摆脱掉轮询……

    怎么现在又回到轮询了。。。
    sunmoon1983
        19
    sunmoon1983  
       2020-11-23 16:50:21 +08:00
    我觉得有可能是因为要兼容一些老版本的浏览器才这么干的
    x86
        20
    x86  
       2020-11-23 16:51:47 +08:00 via Android
    @yaocai321 公共环境呀,起码我在网咖或其它公共区域电脑登入我情愿扫码
    tairan2006
        21
    tairan2006  
       2020-11-23 16:52:37 +08:00
    一般来说是没必要,因为这个场景太简单了…没专门搞个长连接服务
    suchbear
        22
    suchbear  
       2020-11-23 16:54:56 +08:00
    我自己网站用的这个,但是因为没有用户,我也不知道这个 websocket 到底如何,哈哈哈
    brezp
        23
    brezp  
       2020-11-23 16:56:03 +08:00
    微信多老了,旧的才用轮询吧, 你先开发的那些应用内的聊天室什么的肯定有 websocket 就用 websocket 阿,没觉得有什么高成本的
    hotcool100
        24
    hotcool100  
       2020-11-23 16:58:23 +08:00
    主要是 websocket 的 session 和 http session 是不同的,如果用 websocket 那么还要做额外的 session 一致性处理等增加一堆代码,相比起来,ajax 多省事。
    mywaiting
        25
    mywaiting  
       2020-11-23 17:02:20 +08:00 via iPhone
    使用 ws 的扫码登录,可以去看一下 whatsapp 的登录实现

    使用 ws 并不会更快,而且使用 ws 相当于裸 tcp 层,需要自己实现应用层协议,相对来说,使用 http 更简单
    zhouyg
        26
    zhouyg  
       2020-11-23 17:44:40 +08:00
    用 websocket,投入大的多而回报跟 ajax 基本没差别
    a62527776a
        27
    a62527776a  
       2020-11-23 17:49:35 +08:00
    微信最新版的 web IMSDK 用的就是轮询
    GTim
        28
    GTim  
       2020-11-23 17:55:45 +08:00
    因为性能要求不高,高了反而坏事
    metrxqin
        29
    metrxqin  
       2020-11-23 23:21:40 +08:00 via Android
    WS 需要维持长时间 TCP 连接,服务端开销比较大。
    pytth
        30
    pytth  
       2020-11-24 14:13:53 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2854 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:26 · PVG 22:26 · LAX 07:26 · JFK 10:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.