• 请不要在回答技术问题时复制粘贴 AI 生成的内容
edis0n0
V2EX  ›  程序员

2G 弱网,可接受 3~5 秒延迟, HTTP 每秒轮询 和 WebSocket 断线立即重连 哪个稳定性更好一些?

  •  
  •   edis0n0 · Dec 15, 2022 · 4434 views
    This topic created in 1422 days ago, the information mentioned may be changed or developed.

    传输内容是一些文本(每分钟数据量在 1KB 左右),和一些图片(平均大小 80KB 左右,如果用 WS 的话应该要传链接走 HTTP 下载以免堵塞 WS )

    24 replies  •  2022-12-16 12:07:40 +08:00
    DefoliationM
    DefoliationM
    Dec 15, 2022
    1
    WebSocket 吧,http 可能还要重新进行 tcp 三次握手。
    edis0n0
    edis0n0
    OP
    Dec 15, 2022
    2
    原始需求是服务器推送指令,部分指令客户端需要向服务器上传 80KB 左右的返回数据(二进制)
    因为弱网,用的是简单对称加密,无 TLS
    edis0n0
    edis0n0
    OP
    Dec 15, 2022
    3
    延迟不敏感,5 秒以内都可以,稳定性比较重要(不能出现掉线 1 分钟客户端才检测到,然后才开始重连的情况)
    wwbfred
    wwbfred
    Dec 15, 2022 via iPhone
    4
    简单想了下,除非 HTTP 轮询每次都重新握手,否则应该差不多,建议用 ws 。
    edis0n0
    edis0n0
    OP
    Dec 15, 2022
    5
    @wwbfred #4 ws 有没有可能出现连接断开客户端过很久才检测到的情况?
    tyzandhr
    tyzandhr
    Dec 15, 2022 via Android
    6
    冒昧问下,为什么不本地分包后用 udp 发,服务端做个校验呢?节省掉握手时间。_(:з」∠)_
    edis0n0
    edis0n0
    OP
    Dec 15, 2022
    7
    @tyzandhr #6 因为需要自己处理丢包之类的问题,怕弄不清楚
    tyzandhr
    tyzandhr
    Dec 15, 2022 via Android
    8
    @edis0n0 既然只是怕麻烦,那就用 ws 好了
    wwbfred
    wwbfred
    Dec 15, 2022
    9
    @edis0n0 链路中断除非到下一次数据包 /心跳包发送的时候才能检测到,在此之前任何协议都无法检测到。
    而正常的挥手任何一个设计合理的协议都是可以感知的,不存在很久后才能检测到的问题。
    userdhf
    userdhf
    Dec 15, 2022
    10
    盲猜是监控...
    xsen
    xsen
    Dec 15, 2022
    11
    小包传输,重连+断点续传

    传输成不管是 http ,还是 websocket ,或者 tcp 或 udp 都差距不会很大
    xsen
    xsen
    Dec 15, 2022
    12
    1-2s 一个心跳检测通讯状况
    CyJaySong
    CyJaySong
    Dec 15, 2022
    13
    MQTT 了解一下?
    cheng6563
    cheng6563
    Dec 15, 2022
    14
    客户端不是浏览器不如用 MQTT
    winglight2016
    winglight2016
    Dec 15, 2022
    15
    @CyJaySong 的确,物联网协议那么多,何必自己发明轮子
    SmiteChow
    SmiteChow
    Dec 15, 2022
    16
    MQTT over WebSockets
    Twan
    Twan
    Dec 15, 2022
    17
    UDP
    newmlp
    newmlp
    Dec 15, 2022
    18
    http3
    superliy
    superliy
    Dec 15, 2022
    19
    ws 有没有可能出现连接断开客户端过很久才检测到的情况?


    有没有断开连接 要自己通过心跳保证的,比如两秒中发一个 byte ,服务端立即回复,两次收不到回复就认为是断开的
    luny
    luny
    Dec 15, 2022
    20
    2G ,被运营商限制,现在基本都没有流量了,可以实测一下,估计几个字节都难
    anviod
    anviod
    Dec 15, 2022
    21
    为啥不用 NBIoT 或者 cat 网络 做物联网产品吗? 稳定的一批
    tmumu
    tmumu
    Dec 15, 2022
    22
    13 楼正解,mqtt 或者 ws
    opengps
    opengps
    Dec 16, 2022
    23
    弱网 WebSocket 好很多,http 光包头信息就占了那么多,甚至更推荐原生 socket 去 udp 发数据
    patrickyoung
    patrickyoung
    Dec 16, 2022 via iPhone
    24
    MQTT
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2177 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    ♥ Do have faith in what you're doing.