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

请大家给我们的开源 IM 解决方案提建议吧。

  •  1
     
  •   imndx · 2019-04-23 09:04:20 +08:00 via Android · 8351 次点击
    这是一个创建于 2026 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上周五,发了一条有关我们搞的 IM 解决方案的帖子,结果涨了不少 star,谢谢大家。

    这是我们的 IM 系统,感兴趣的话,你都可以很容易自己部署一套自己玩:

    https://github.com/wildfirechat

    目前全平台支持,单聊、群聊、聊天室、公众号、voip 等,消息全链路加密。

    现在,我们在思考一个问题:

    是优先开发更多的外围系统,比如更好用的 bot 系统呢?还是优先去支持更多的平台?

    请问大家,你们都希望 IM 都能提供哪些功能?

    46 条回复    2019-06-30 07:52:19 +08:00
    bengcaca
        1
    bengcaca  
       2019-04-23 09:11:14 +08:00 via Android
    野狗挂了又来野火…
    luojianxhlxt
        2
    luojianxhlxt  
       2019-04-23 09:21:35 +08:00
    ios、安卓、pc 这些客户端,为啥配置私有服务器一定要编译呢?
    做出客户端,做个配置页面,让别人自己配置一下直接用多好啊
    imndx
        3
    imndx  
    OP
       2019-04-23 09:27:39 +08:00 via Android
    @luojianxhlxt 这个问题,我们目前想的是,防止被滥用,故留了一点。
    photon006
        4
    photon006  
       2019-04-23 09:32:32 +08:00
    跟 rocket.chat 优势是什么呢?
    目前我也打算开发简单的聊天功能,用 socketcluster 实现。
    joesonw
        5
    joesonw  
       2019-04-23 09:43:06 +08:00
    能自己用 IM 的基本都是开发团队. 那开发团队最看中的是什么呢? 你们自己选 IM/团队协作工具看中的又是什么呢?
    imndx
        6
    imndx  
    OP
       2019-04-23 09:47:30 +08:00
    @joesonw 现在的开发模式是复用一些成熟的组件,而不是全都从零自己开始写,我们的目标是为开发者提供一个简单、可靠的基础组件。
    imndx
        7
    imndx  
    OP
       2019-04-23 09:49:41 +08:00
    @bengcaca 野狗是商业公司,挂了就真挂了;而野火是开源项目,挂或不挂,代码都在哪,每个人都可以维护自己的分支。
    90928yao
        8
    90928yao  
       2019-04-23 10:09:57 +08:00
    和 mattermost 比 有什么优势呢,以前用过 mattermost。
    顺便问下 你们 app 用了微信的 mars 吗?
    90928yao
        9
    90928yao  
       2019-04-23 10:15:56 +08:00
    搞个 wechat bot 吧 看到 qq 群 就不想加了。。。本来还想进群学习下呢
    imndx
        10
    imndx  
    OP
       2019-04-23 10:19:51 +08:00
    @90928yao
    @photon006

    优势嘛,我觉得咱们都说中文也是个优势吧,哈哈

    另外,我们底层链接是基于微信的 mars 的,mars 针对国内的网络环境做了很多的优化,我们用起来非常稳定,效果非常好。
    matolv
        11
    matolv  
       2019-04-23 10:30:16 +08:00   ❤️ 1
    matrix 了解一下
    nanaw
        12
    nanaw  
       2019-04-23 10:36:09 +08:00 via Android   ❤️ 1
    要我说先做好 UI 吧,好看才能吸引人。
    不知道你们是图省事还是觉得模仿微信是优势,我觉得这是劣势。。
    imndx
        13
    imndx  
    OP
       2019-04-23 10:39:08 +08:00
    @matolv 能贴一个地址吗?这个还真不了解。
    AngryMagikarp
        14
    AngryMagikarp  
       2019-04-23 10:41:57 +08:00
    我最看重的是文档和接口的设计规范
    imndx
        15
    imndx  
    OP
       2019-04-23 10:42:12 +08:00
    @nanaw 谢谢建议,UI 目前是我们的一个劣势,努力 ing

    目前 App 只是用来演示我们的底层具备那些能力,是希望有开发者能在我们的基础上二次开发。
    dynastysea
        16
    dynastysea  
       2019-04-23 10:42:57 +08:00
    用户离线消息为啥只能收 1000 条。。。
    imndx
        17
    imndx  
    OP
       2019-04-23 10:45:37 +08:00
    @AngryMagikarp 谢谢建议,对的,对于一个开源项目来说,文档和接口设计的规范程度,直接反应了项目的质量。

    这些方面,我们会持续改进,目前 UIKit 层的接口,iOS 和 Android 不是很统一,需要改进。

    谢谢。
    missdeer
        18
    missdeer  
       2019-04-23 10:50:24 +08:00   ❤️ 1
    不知道有没有 fedoration ?就是比如 2 个人各自建了私服,可以让 2 个私服连起来,2 个私服下的客户端可以互发消息?
    90928yao
        19
    90928yao  
       2019-04-23 11:03:23 +08:00
    还有个疑问 这是你们全职在弄 还是业余时间搞搞的
    AngryMagikarp
        20
    AngryMagikarp  
       2019-04-23 11:03:34 +08:00   ❤️ 1
    建议不要执着于功能,不同人有不同需求,功能永远都无法满足所有人。

    你应该先给自己的产品一个定位。比如安全性?隐私性?易部署?易扩展?诸如此类的。

    另外一定要注重文档建设,不然很难会有人加入。
    AngryMagikarp
        21
    AngryMagikarp  
       2019-04-23 11:09:15 +08:00
    我之前也写过一个聊天服务器,不过一个人写功能很有限。https://gitlab.com/lightim Go 语言实现的。
    imndx
        22
    imndx  
    OP
       2019-04-23 11:19:29 +08:00
    @dynastysea 这个数其实可以改,但太多的话,端上收消息,可能会比较慢,这是个平衡。

    后续,我们可以把这个放到配置文件,可配置。
    imndx
        23
    imndx  
    OP
       2019-04-23 11:20:42 +08:00
    @missdeer 你这个想法有意思,但目前不支持,是集中式的。
    imndx
        24
    imndx  
    OP
       2019-04-23 11:21:17 +08:00
    @90928yao 我们有 5 个人,目前是业余时间搞,以后准备全职。
    CodeCommunist
        25
    CodeCommunist  
       2019-04-23 11:39:01 +08:00 via Android
    搞 im 的很多,但都各自为战,最后活下来的没多少。子弹短信的失败已经证明没人能撼动企鹅地位。另外推荐一个 telegram 后端的开源实现。
    https://github.com/nebula-chat/chatengine
    imndx
        26
    imndx  
    OP
       2019-04-23 12:12:11 +08:00
    @CodeCommunist 我们搞的不是通用的社交软件,我们提供了 IM 的能力,开发者可以在这上面发挥,然后开发产品。

    你的推荐,收藏了,谢谢。
    lcj2class
        27
    lcj2class  
       2019-04-23 12:14:34 +08:00 via iPhone
    Zulip 了解下
    imndx
        28
    imndx  
    OP
       2019-04-23 12:22:59 +08:00
    @lcj2class 谢谢推荐,我去了解一下。看来这个市场,产品还是非常多的。
    tiaod
        29
    tiaod  
       2019-04-23 12:50:48 +08:00
    做 IM 的必须想一个问题,上古时期的 email 都支持 federation,你做一个新的 IM 反而不支持的话,那么你对自己的定位就是做企业內部协作工具了
    jswh
        30
    jswh  
       2019-04-23 13:17:17 +08:00
    @tiaod 请教 federation 是啥

    另外,im 的长连接不能你们是直接传输数据还是只是传输信令?我看微信的长链接也只是传输信令,具体的聊天数据红白事要通过 http api 获取。如果只是传输信令的话,我之前又考虑是不是可以用 mqtt 来直接替代长连接部分,协议更加完整,而且是公共协议。
    jswh
        31
    jswh  
       2019-04-23 13:18:50 +08:00
    @jswh 刚吃饱饭有点晕。修正一下。

    im 的长连接不知道你们是直接传输数据还是只是传输信令?我看微信的长链接也只是传输信令,具体的聊天数据还是要通过 http api 获取。如果只是传输信令的话,我之前有考虑是不是可以用 mqtt 来直接替代,协议更加完整,而且是公共协议。
    tiaod
        32
    tiaod  
       2019-04-23 13:35:03 +08:00
    @jswh federation 前面 @missdeer 有说
    ntop
        33
    ntop  
       2019-04-23 13:40:59 +08:00   ❤️ 1
    先加油吧!做开源的东西感觉还蛮难得,我之前和同事搞过一个游戏引擎(korok.io)。自我感觉是,如果你走开源路线就要有长期作战的准备,慢慢的等待项目孵化、发酵才能在市场夺得一席之地。如果你走的是商业路线,那就简单了花钱宣传,招人做商务,好处是很快就可以看见结果。如果有计划辞职出来搞,并且走开源路线的话觉得还是等等看比较好。
    mv0x
        34
    mv0x  
       2019-04-23 13:47:26 +08:00   ❤️ 1
    能开源做事情确实应该点赞,如果仅仅是做为一个爱好就好,如果做为一个商业项目,我个人感觉看不到太多的卖点。
    比如以前很好的 tox/tok,主打是去中心化,点到点之类的,但是也没有做起来。
    这个 tox 的客户端,从界面来说,确实比较美观。

    https://github.com/InsightIM
    imndx
        35
    imndx  
    OP
       2019-04-23 14:14:19 +08:00
    @tiaod 我们的定位是:为开发者提供安全、稳定、可靠的 IM 组件,开发者在他们的项目中集成我们的 IM 组件。
    imndx
        36
    imndx  
    OP
       2019-04-23 14:18:23 +08:00
    @jswh 小的数据,比如消息、信令之类的,我们是长短结合。
    文件之类的大数据,走的是短链接。

    另外,mqtt 是在长连接之上的。
    imndx
        37
    imndx  
    OP
       2019-04-23 14:23:32 +08:00
    @ntop

    看了下,你们的游戏引擎还挺有意思的。

    我们目前想的是,区分社区版和商业版,商业版会提供一些高级功能,比如集群等。

    嗯嗯,得在看看项目的发展情况,不能贸然辞职。
    missdeer
        38
    missdeer  
       2019-04-23 14:53:37 +08:00
    @tiaod 就算是企业内部协作工具,也有很强烈的 federation 需求,比如思科家的 Jabber,微软家的 S4B (以前的 lync )都可以,也就国人长期只用 QQ 和微信,以为所有的 IM 就是这样的。
    matolv
        39
    matolv  
       2019-04-23 15:41:27 +08:00   ❤️ 2
    @imndx https://github.com/matrix-org 服务器是 synapse,支持 federation,E2E 聊天,E2E 群聊,VOIP,视频等。客户端 Riot 全平台支持,含 android FCM,IOS apple push 或自带后台的 Fdroid 版本。该项目的愿景非常宏大,且维护频繁,你能想到的都有了。
    zhfish
        40
    zhfish  
       2019-04-23 15:43:13 +08:00
    mark 下
    im 需求几乎都在客服上
    日常沟通的 im,微信 /钉钉已经够多了
    zhfish
        41
    zhfish  
       2019-04-23 15:46:17 +08:00   ❤️ 1
    客服方向的路几乎已经固定

    1. 分配客服
    2 .全平台支持,微信支付宝小程序
    3. bot,质检
    4. 呼叫中心,实现 AI 话务

    纯 IM 想不到用处,支持开源 IM,支持 mars
    imndx
        42
    imndx  
    OP
       2019-04-23 15:56:06 +08:00
    @zhfish 谢谢你建议,你说的很好,我先记录下来,仔细想想。
    yukiir
        43
    yukiir  
       2019-04-23 16:02:10 +08:00
    有个叫微喇的 app,挺有意思的,在 IM 基础上加入了实时对讲,不知道用什么方式实现的。
    imndx
        44
    imndx  
    OP
       2019-04-23 16:10:56 +08:00
    @yukiir 最简单的一种实现方式是:一个抢麦服务器,控制现在跟谁说话。端上一直录音,每分钟发一条不可见消息给对方,对方收到消息直接播放。
    firstfan
        45
    firstfan  
       2019-06-07 21:42:33 +08:00
    有个小问题,看介绍中说社区版可以支撑上百万用户,但请问有测试过同时在线用户数量么?
    因为作为社区版是单机的,连接都是挂一台机器上,本身压力还蛮大,我觉得可能也就能到两三万?
    imndx
        46
    imndx  
    OP
       2019-06-30 07:52:19 +08:00 via Android
    @firstfan 我们开发了基于 jmeter 的测试工具,也是开源的,你可以自行测试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:34 · PVG 11:34 · LAX 19:34 · JFK 22:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.