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

2022-12-15 00:11:12 +08:00
 edis0n0

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

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

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


有没有断开连接 要自己通过心跳保证的,比如两秒中发一个 byte ,服务端立即回复,两次收不到回复就认为是断开的
luny
2022-12-15 11:45:20 +08:00
2G ,被运营商限制,现在基本都没有流量了,可以实测一下,估计几个字节都难

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

https://tanronggui.xyz/t/902592

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

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

© 2021 V2EX