问些 websocket 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
victimsss
V2EX    WebSocket

问些 websocket 的问题

  •  
  •   victimsss 2023 年 11 月 16 日 1530 次点击
    这是一个创建于 811 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前使用 ws 或者 node-websocket 的库。假如作为一个 websocket client ,业务需求本身是定时推送消息的,是不是没必要维护心跳(及时重连)了,因为我觉得心跳更多是保持活跃防止关闭连接的,而 close 事件已经承担了检测连接状态的功能。 假如只是监听 close 事件来维护重连,会有什么比较大隐患吗,比如连接已经关闭了但是 close 事件不触发(?)
    6 条回复    2023-11-16 14:13:06 +08:00
    orangie
        1
    orangie  
       2023 年 11 月 16 日
    有没有一种可能,就是,心跳机制会根据上次发包的时间来决定,业务发包够频繁就不会发心跳,而不是傻傻地固定时间发送。另外,使用 close 事件在关闭后重连的后果是反复新建立连接,这个过程 TCP 握手、TLS 握手、重新分配资源,怎么想怎么不划算。
    IvanLi127
        2
    IvanLi127  
       2023 年 11 月 16 日 via Android
    我印象中,如果没数据交换,状态有可能是不确定的,你想及时确认状态的话,就得有心跳包。如果 client 是浏览器的话,你还得看他怎么实现的,如果不想翻车,还是好好跳吧。
    chenluo0429
        3
    chenluo0429  
       2023 年 11 月 16 日 via Android
    如果你对实时性要求高一些就不行。主动关闭和客户端可感知的网络异常是会有 close 的,但是中间网络链路上的异常,客户端是没法感知的
    tool2d
        4
    tool2d  
       2023 年 11 月 16 日
    别的不知道,浏览器的 close 事件很稳。
    WashFreshFresh
        5
    WashFreshFresh  
       2023 年 11 月 16 日
    心跳是为了维持连接,不是检测连接,等到 close 的时候你只能再重新连接了。
    cF06myaQ57WHKMBv
        6
    cF06myaQ57WHKMBv  
       2023 年 11 月 16 日
    添加应用心跳是为了业务及时检测网络通路的状态,像 1 楼说的,当业务数据交互频繁的时候,可以不发送心跳。如果没有心跳包,完全依赖 websocket or tcp 自带心跳机制,比如 tcp 的 KeepAlive 机制,有时候链路的状态不能完全反应网络是否可用。
    举两个场景吧
    1 、两个设备已经建立的 TCP 连接,但是链路上没有数据发送,某一时刻网线断了,但是 TCP 的超时心跳还没有触发( TCP 默认的心跳时间会比较长,而且还有重试机制),这时候再把网线连上,这种情况下,两个设备上的应用应该是没有感知的
    2 、如果服务端的应用因为某些原因,没有响应,比如 cpu 使用率飙升到 100%,这时候网络状态是好的,但是业务无响应,这个时候客户端该怎么办
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4231 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:37 PVG 17:37 LAX 01:37 JFK 04:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86