V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sunxb
V2EX  ›  程序员

即时通讯 app 的技术栈

  •  
  •   Sunxb · 2020-04-05 10:05:36 +08:00 · 6116 次点击
    这是一个创建于 1692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们,我们公司要自己开发一个即时通讯类型的 app, 请问需要储备那些技术知识。协议现在用的 xmpp,听说要改到 websocket 。我是移动端的开发 ~ 歇歇

    30 条回复    2020-07-14 23:34:04 +08:00
    xylophone21
        1
    xylophone21  
       2020-04-05 10:16:29 +08:00   ❤️ 1
    “听说”一词,说明在技术选择和方案设计上,你是被动的。为什么不是我们做了 xxx 分析以后认为应该改到 websocket ?
    lneoi
        2
    lneoi  
       2020-04-05 10:17:50 +08:00
    xmpp 好像 app 端用的比较多,对前端十分不友好
    tulongtou
        3
    tulongtou  
       2020-04-05 10:30:47 +08:00
    grpc,protobuf
    djoiwhud
        4
    djoiwhud  
       2020-04-05 10:38:07 +08:00   ❤️ 1
    私有 tcp 或者 websock,redis,高可用项目的项目经验。听起来都很容易,不过,没有真实的项目经验,你很难理解 99.999%的送达率需要怎么设计和实现。
    cszchen
        5
    cszchen  
       2020-04-05 10:54:36 +08:00   ❤️ 4
    可以试试 socket.io ,客户端很齐全,安卓、ios 、c 等等都有 sdk,对大部分公司应该都是够用的
    reus
        6
    reus  
       2020-04-05 10:58:26 +08:00
    xmpp 和 websocket 不能共用? https://tools.ietf.org/html/rfc7395
    hst001
        7
    hst001  
       2020-04-05 11:15:19 +08:00
    没什么特殊需求建议你们还是用三方服务,自己对接接口就好了,没有经验的话,自己实现有很多技术细节不是被你们忽略就会被耗掉大把大把的时间
    tairan2006
        8
    tairan2006  
       2020-04-05 11:24:46 +08:00 via Android
    websocket 是个裸协议啊,应用协议你还是要选一个…当然你可以用 json
    jakezh
        9
    jakezh  
       2020-04-05 12:49:23 +08:00 via iPhone
    @jackrelative 求讲一下高送达率怎么保证。
    最近在搞一个人命关天的项目,不敢大意
    guoziyan
        10
    guoziyan  
       2020-04-05 13:04:23 +08:00
    @tairan2006 可以参考 MQTT 的 QOS 1 的实现,然后做好客户端消重。
    hantsy
        11
    hantsy  
       2020-04-05 13:05:45 +08:00
    可以使用 STOMP ( WebSocket+RabbitMQ ),用 Rabbit 来缓解消息的压力,这个 Spring 内置支持。
    CoderGeek
        12
    CoderGeek  
       2020-04-05 13:36:36 +08:00
    自验 搭起来成本不大 问题是送达率 一般小厂都会选择三方封装
    自己搞得话 从技术方案到成本都要仔细梳理
    heiheidewo
        13
    heiheidewo  
       2020-04-05 13:58:51 +08:00   ❤️ 1
    推荐腾讯的 IMSDK, 这东西看上去简单( tcp + 私有协议 + protobuf 序列化),实际上有大量的细节需要注意的, 比如可靠性,尤其是各种群消息。
    ilylx2008
        14
    ilylx2008  
       2020-04-05 15:27:27 +08:00
    websocket 挺简单的
    tanranran
        15
    tanranran  
       2020-04-05 15:45:41 +08:00
    坑在于后台,前端还好。推荐使用三方 SDK,自己研发,耗时耗力最后还是残缺品
    laminux29
        16
    laminux29  
       2020-04-05 16:15:14 +08:00
    IM 的本质就是 rpc,没啥难度。只是业务上,第一次玩的话,最好用 Visio 把流程梳理一下。
    murmur
        17
    murmur  
       2020-04-05 16:16:43 +08:00
    技术栈啊,别搭了,直接用网易的 sdk 吧,原子弹短信就是网易技术
    iFlicker
        18
    iFlicker  
       2020-04-05 16:23:46 +08:00
    了解一下微信开源的 Mars
    djoiwhud
        19
    djoiwhud  
       2020-04-05 19:40:18 +08:00
    @jakezh 上行和下行消息都加确认机制,不行就重发。仔细考虑重发机制的去重问题。一般公司的量不会涉及扩容问题,也就不涉及消息转发的问题。总的来说,一个小的稳定的系统还是不怎么难做的。
    yeqizhang
        20
    yeqizhang  
       2020-04-05 19:44:20 +08:00 via Android
    @jackrelative 感觉 9 少了点,不知道企鹅做到了多少个 9 。而且应该有 ack 保证 100%?
    jakezh
        21
    jakezh  
       2020-04-05 21:03:44 +08:00
    @jackrelative #19 多谢
    fan123199
        22
    fan123199  
       2020-04-05 23:16:10 +08:00
    websocket 用在 H5 上比较方便吧。
    Meltdown
        23
    Meltdown  
       2020-04-06 01:37:19 +08:00 via Android
    我记得国内有个专门的搞即时通讯的技术网站
    Sunxb
        24
    Sunxb  
    OP
       2020-04-06 09:43:29 +08:00
    大佬们, 关键是公司要求的必须是自己搞,后台都是用的自己买的服务器,为了数据安全问题。从来没告诉哦即时通讯类型的东西,一时确实没处下手。
    liyaojian
        25
    liyaojian  
       2020-04-06 12:19:05 +08:00
    @Meltdown #23 你说的是这个吧 http://www.52im.net/
    jin7
        26
    jin7  
       2020-04-06 13:31:40 +08:00
    之前有人发过 好像叫野火
    version
        27
    version  
       2020-04-06 15:43:40 +08:00
    websocket 走 http 那套 延迟也大呢.做得好 30ms 以内.
    推荐还是 tcp 私有协议.protobuf 拆封包吧..这样稳妥些.延迟也没那么低.麻烦就是分布式和重连要自己爬坑了
    一般都是 c++ 写通信层底层..业务就各自语言包起来.移动或者桌面一般都这样干多
    laozhang
        28
    laozhang  
       2020-04-07 06:03:10 +08:00 via iPhone
    我自己最近搞了一个。吞吐量不是很高。用的 websocket 。
    EulerChen
        29
    EulerChen  
       2020-04-07 09:49:43 +08:00
    MQTT
    FateBlood
        30
    FateBlood  
       2020-07-14 23:34:04 +08:00
    出一套数字货币交易所,支持币币和合约交易所需要联系 +V itshenmalong
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.