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

BOSS 直聘的那种 im 聊天的是怎么实现的呢

  •  1
     
  •   shilianmlxg · 220 天前 · 5115 次点击
    这是一个创建于 220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小程序开发 im,简单聊天发图片,或者些定制小功能,比如一些互动,

    想问下大佬,这种聊天需求,有什么好用的方案或者轮子。

    还有就是只做微信小程序 用原生写好还是 uniapp 呢再或者是 taro 呢

    28 条回复    2022-08-16 16:27:23 +08:00
    lambdaq
        1
    lambdaq  
       220 天前
    livechat 国内很成熟的市场了。
    Vegetable
        2
    Vegetable  
       220 天前
    Jekins
        3
    Jekins  
       220 天前
    随便找个 io 不就好了吗?我们公司用 t-io..
    dongtingyue
        4
    dongtingyue  
       220 天前
    之前弄了个,源码在 github 上
    http://demo.heybutterfly.com/kefuroom/demo.html
    JDog
        5
    JDog  
       220 天前
    无意中发现 t-io ,可这项目看个文档还得注册登录
    wangsilence
        6
    wangsilence  
       220 天前
    后端和小程序我都可以做,价格公道,童叟无欺
    AreYou0k
        7
    AreYou0k  
       220 天前
    腾讯的原生好一点, 公司项目 uni-app, 我用腾讯的 IM 里那个 uniapp 示例功能缺失, bug 一大堆.
    LeegoYih
        8
    LeegoYih  
       220 天前   ❤️ 10
    不需要保存聊天记录的话,直接 websocket + protobuf 就可以了。

    如果要保存聊天记录那就复杂了,需要一定的开发成本,推荐使用商业的 IM 解决方案。

    如果项目内容比较敏感,需要自己开发一套系统,可以参考这个:
    把服务拆成 Chat API 和 Chat Server:
    - Chat API:负责 CRUD ,无状态,可以动态扩容,主要性能瓶颈在于数据库。
    - Chat Server:负责保持长连接,推送消息,通过注册中心相互发现,或使用 Peer to Peer 方式相互注册和推送消息。
    - DB:推荐 MongoDB 之类的 NoSQL

    理论上,Chat Server 只需要 2 个实例就可以保证高可用和十万级连接数,只需要传消息 ID ,所以报文很小,使用 protobuf 通常只有 20 - 50 Bytes

    ChevalierLxc
        9
    ChevalierLxc  
       220 天前
    @LeegoYih 10 万这么高吗?我之前做了,4C8G 貌似只能 8000 个连接
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       220 天前
    还记得 老罗的子弹短信 直接用的网易云信
    shilianmlxg
        11
    shilianmlxg  
    OP
       220 天前
    @AreYou0k 这个东西叫即时通信 IM ,远离它你就远离了不幸。
    shilianmlxg
        12
    shilianmlxg  
    OP
       220 天前
    @LeegoYih 谢谢大佬。这去学习下。

    需要保存聊天记录。也确实内容很敏感,谢谢大佬。那这个 chat Api 加 chat server ,开发的难度之于前端 还是之于后端呢
    xiangxiangxiang
        13
    xiangxiangxiang  
       220 天前
    @LeegoYih 感谢大佬分享,想请问下还有没有更多的技术细节文档啊?学习一下
    wdwwtzy
        14
    wdwwtzy  
       220 天前
    很多第三方的吧 集成一下就行
    yikyo
        15
    yikyo  
       220 天前 via iPhone
    网易的支持还可以,但是 api 不统一,用起来感受不好
    LeegoYih
        16
    LeegoYih  
       220 天前
    @shilianmlxg
    @xiangxiangxiang

    复杂度具体要看你们业务需要实现的细节,一般来说前端可能会稍微复杂点,比如:消息重发、消息撤回、消息已读、客户端拉取离线未读消息、客户端过滤重复消息等。后端主要考虑集群高可用、消息 ID 生成算法、消息持久化。

    具体的思路就是保持每个服务的实现简单,尽量不引入中间件增加复杂度,Chat API 只负责 CRUD ,Chat Server 只负责消息推送,保证这两个服务可以单独使用互不影响。


    因为是给集团设计的,所以不太方便直接拿出来给大家看,现在手头上也没有现成的设计方案,可以弄个语雀文档,把我加进去,我有空把各个功能的细节写一下,大家一起设计。
    night98
        17
    night98  
       220 天前
    github 上好像有开源的方案
    Windelight
        18
    Windelight  
       220 天前 via Android
    以前调研过开源项目野火 Firechat ,在 GitHub 开源,还有青岛易软的喧喧,支持私有部署但是闭源软件。不过我们认为最好的还是网易云信
    samzong
        19
    samzong  
       220 天前
    cskefu 春松客服了解下
    newskillsget
        20
    newskillsget  
       220 天前
    @LeegoYih 按这个图,发一条消息客户端要和服务端通信两次啊,感觉这个逻辑不是很主流
    CookCoder
        21
    CookCoder  
       220 天前
    @shilianmlxg 用小程序云开发分分钟搞定
    MarioLuo
        22
    MarioLuo  
       219 天前 via Android
    @LeegoYih 请问下用的什么画图工具
    Goooooos
        23
    Goooooos  
       219 天前   ❤️ 1
    @MarioLuo 看风格,大概是 plantuml
    MarioLuo
        24
    MarioLuo  
       219 天前
    @Goooooos plantuml 好像没这么好看
    HuskyYellow
        25
    HuskyYellow  
       219 天前
    小程序 为建议是原生, 用第三方编译性能会差一点的.
    融云,腾讯 IM,网易云信相对较好,
    环信是最垃圾的.
    shilianmlxg
        26
    shilianmlxg  
    OP
       219 天前
    @HuskyYellow 谢谢大佬.
    hxzhouh1
        27
    hxzhouh1  
       219 天前
    websocket 。
    woqujjfly
        28
    woqujjfly  
       219 天前
    小程序三种 im 都试过 ,原生的当然是自家的腾讯 im 好
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2461 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 15:32 · PVG 23:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.