有没有一种现成的应用于不稳定网络间的协议,支持断线无感重连(不丢失会话、待发消息恢复后自动继续发), 5s 没 ACK 的消息自动重发,自动去重,数据量大时自动创建多连接传输?挺常见的场景,用 websocket 手搓很难做到完美

2024-08-23 17:26:32 +08:00
 drymonfidelia
2403 次点击
所在节点    程序员
19 条回复
dettan
2024-08-23 17:48:54 +08:00
好像没有, 我也需要
vfs
2024-08-23 17:50:39 +08:00
看你的描述, 感觉 MQTT 比较合适。而且 MQTT 也可以跑在 websocket 之上
sujin190
2024-08-23 17:55:56 +08:00
https://github.com/snower/xstream 搞过一个,创建的 stream 不是和 tcp 一对一绑定的,内部有单独 ack ,tcp 重连不影响 stream 状态,而且双向可建立 stream ,支持创建多个 tcp 连接来支持并发传输,上层 stream 发送数据不一定使用哪个 tcp 连接,仅供参考哈
OneMan
2024-08-23 18:35:50 +08:00
这种东西太好,都是各家实现。
fairytale
2024-08-23 18:55:37 +08:00
自己拿 udp 手写
fairytale
2024-08-23 18:57:03 +08:00
如果上面必须是原始 tcp ,那就自己写个隧道协议。
gam2046
2024-08-23 19:25:49 +08:00
(确信)你找的是 MQTT ,除了不满足:数据量大时自动创建多连接传输
R4rvZ6agNVWr56V0
2024-08-23 20:24:07 +08:00
可以考虑在 Socket.IO 基础上进行二次开发
FishBear
2024-08-23 20:28:07 +08:00
看看我的 mtcp
drymonfidelia
2024-08-23 20:28:43 +08:00
@fairytale UDP 更不稳定吧,之前试过 UDP ,非大厂业务在国内 qos 级别非常低,丢包率很高,有的时候只能跑几 kb
DefoliationM
2024-08-23 20:50:03 +08:00
quic 吧,支持连接迁移。
mmdsun
2024-08-24 11:59:55 +08:00
真有吗。这得找个好框架自己开发吧。
james122333
2024-08-24 17:45:01 +08:00
你这样还会有万一 ack 消息没收到卡住怎么办 你有个超时 用户体验就有问题 这就是既要又要
james122333
2024-08-24 17:48:18 +08:00
tcp 本身的 ack 又不对应用层开放 然而 tcp 广范支援 所以...
james122333
2024-08-24 17:59:21 +08:00
至于短连线你要做的事情就更多了 并且一样有丢包问题
james122333
2024-08-24 18:00:30 +08:00
消秏资源又更多 websocket 配 ack 消息本身也是消秏资源更多
iqoo
2024-08-24 19:44:47 +08:00
盲猜用来富强~
drymonfidelia
2024-08-24 20:08:46 +08:00
@iqoo 我不在国内为什么要富强
dododada
2024-08-26 09:05:12 +08:00
你这个需求跟协议没关系,更多的在逻辑处理上。

消息重发,难道你消息不能一直飘在协议里面,要本地缓存+三方缓存+离线处理,这些都是逻辑控制啊

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

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

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

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

© 2021 V2EX