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

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

  •  1
     
  •   shilianmlxg · 2022-08-15 14:42:45 +08:00 · 6158 次点击
    这是一个创建于 825 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    28 条回复    2022-08-16 16:27:23 +08:00
    lambdaq
        1
    lambdaq  
       2022-08-15 15:15:22 +08:00
    livechat 国内很成熟的市场了。
    Vegetable
        2
    Vegetable  
       2022-08-15 15:19:15 +08:00
    Jekins
        3
    Jekins  
       2022-08-15 15:24:23 +08:00
    随便找个 io 不就好了吗?我们公司用 t-io..
    dongtingyue
        4
    dongtingyue  
       2022-08-15 15:28:46 +08:00
    之前弄了个,源码在 github 上
    http://demo.heybutterfly.com/kefuroom/demo.html
    JDog
        5
    JDog  
       2022-08-15 15:42:09 +08:00
    无意中发现 t-io ,可这项目看个文档还得注册登录
    wangsilence
        6
    wangsilence  
       2022-08-15 16:26:28 +08:00
    后端和小程序我都可以做,价格公道,童叟无欺
    AreYou0k
        7
    AreYou0k  
       2022-08-15 16:35:48 +08:00
    腾讯的原生好一点, 公司项目 uni-app, 我用腾讯的 IM 里那个 uniapp 示例功能缺失, bug 一大堆.
    LeegoYih
        8
    LeegoYih  
       2022-08-15 16:46:19 +08:00   ❤️ 11
    不需要保存聊天记录的话,直接 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  
       2022-08-15 16:51:48 +08:00
    @LeegoYih 10 万这么高吗?我之前做了,4C8G 貌似只能 8000 个连接
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2022-08-15 17:23:04 +08:00
    还记得 老罗的子弹短信 直接用的网易云信
    shilianmlxg
        11
    shilianmlxg  
    OP
       2022-08-15 17:32:15 +08:00
    @AreYou0k 这个东西叫即时通信 IM ,远离它你就远离了不幸。
    shilianmlxg
        12
    shilianmlxg  
    OP
       2022-08-15 17:34:54 +08:00
    @LeegoYih 谢谢大佬。这去学习下。

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

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

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


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