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

2018-02-28 10:58:17 +08:00
 reid2017

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

7466 次点击
所在节点    程序员
9 条回复
scriptB0y
2018-02-28 11:03:57 +08:00
websocket 是在 tcp 上面的,我觉得可以放心认为发出去的消息一定会被客户端收到吧。

我记得 wensocket 一端发给另一端发不过去会报错的
BBCCBB
2018-02-28 11:06:54 +08:00
加一个确认机制,客户端处理完成之后发送一个确认消息.
yonglanyouyou
2018-02-28 11:28:23 +08:00
应用层加 ack
ghiei9101
2018-02-28 12:12:55 +08:00
有种机制 叫回执
pathbox
2018-02-28 12:15:49 +08:00
同楼上,如果你想自己控制,在应用层知道,可以自己加 ack 机制,但这个机制不要太复杂
skadi
2018-02-28 12:19:37 +08:00
server -> msg+Hash -> client 然后 client->Hash->server
跟楼上的 ack,回执 什么的都是一个意思.
ioth
2018-02-28 12:22:22 +08:00
websocket 协议,只是保证阻塞的解决,其它在上一层解决。
封包、tcp/udp
reid2017
2018-02-28 13:17:03 +08:00
多谢各位,看来只能自己去实现 ack 了
phy25
2018-02-28 15:08:09 +08:00
https://stackoverflow.com/questions/23238319/websockets-ping-pong-why-not-tcp-keepalive
以及相关问题,结论是应用层做连接检查比较好。
学到一点:不能只依靠 TCP 的特性来判断服务器到客户端的连接。因为有经过代理的情况,而且可能得等到客户端默认的 TCP 超时时间(比较长)才能检测到连接丢失。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/433401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX