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

websocket 通信如何保证/确认客户端收到了消息

  •  
  •   reid2017 · Feb 28, 2018 · 8332 views
    This topic created in 3178 days ago, the information mentioned may be changed or developed.

    如题,服务器发送消息后,如何知道客户端成功接收到了消息?有什么机制吗?

    9 replies  •  2018-02-28 15:08:09 +08:00
    scriptB0y
    scriptB0y
    Feb 28, 2018 via iPhone
    1
    websocket 是在 tcp 上面的,我觉得可以放心认为发出去的消息一定会被客户端收到吧。

    我记得 wensocket 一端发给另一端发不过去会报错的
    BBCCBB
    BBCCBB
    Feb 28, 2018
    2
    加一个确认机制,客户端处理完成之后发送一个确认消息.
    yonglanyouyou
    yonglanyouyou
    Feb 28, 2018
    3
    应用层加 ack
    ghiei9101
    ghiei9101
    Feb 28, 2018
    4
    有种机制 叫回执
    pathbox
    pathbox
    Feb 28, 2018 via iPhone
    5
    同楼上,如果你想自己控制,在应用层知道,可以自己加 ack 机制,但这个机制不要太复杂
    skadi
    skadi
    Feb 28, 2018
    6
    server -> msg+Hash -> client 然后 client->Hash->server
    跟楼上的 ack,回执 什么的都是一个意思.
    ioth
    ioth
    Feb 28, 2018
    7
    websocket 协议,只是保证阻塞的解决,其它在上一层解决。
    封包、tcp/udp
    reid2017
    reid2017
    OP
    Feb 28, 2018
    8
    多谢各位,看来只能自己去实现 ack 了
    phy25
    phy25
    Feb 28, 2018 via Android
    9
    https://stackoverflow.com/questions/23238319/websockets-ping-pong-why-not-tcp-keepalive
    以及相关问题,结论是应用层做连接检查比较好。
    学到一点:不能只依靠 TCP 的特性来判断服务器到客户端的连接。因为有经过代理的情况,而且可能得等到客户端默认的 TCP 超时时间(比较长)才能检测到连接丢失。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   997 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 22:46 · PVG 06:46 · LAX 14:46 · JFK 17:46
    ♥ Do have faith in what you're doing.