请大家给我们的开源 IM 解决方案提建议吧。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
imndx
V2EX    程序员

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

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

    上周五,发了一条有关我们搞的 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     Solana     2670 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:18 PVG 23:18 LAX 07:18 JFK 10:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86