V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
drymonfidelia
V2EX  ›  程序员

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

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

    消息重发,难道你消息不能一直飘在协议里面,要本地缓存+三方缓存+离线处理,这些都是逻辑控制啊
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5330 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:06 · PVG 14:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.