首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  开源软件

迈不过去的 IM 这道坎,有没有推荐好的开源 IM 项目

  •  3
     
  •   SAM2O2O · 2018-07-16 10:52:59 +08:00 · 15224 次点击
    这是一个创建于 455 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现象

    目前 im 做的最好的无外乎是腾讯妈妈的 qq && wechat 以及阿里爸爸的 钉钉,除此之外 im 做的比较好的也就是大企业或者大的组织,个人 && 小组织 && 创业团队 就比较头疼这件事情了。

    问题

    那么小团体或者个人,如何接触 im 的这扇看似很高大上的大门了?当前网络上相关 im 的东西稀疏平常,缺少让人耳目一心的东西,im 普及的问题就存在了!!!

    IM 不是一个很基础的话题吗?好像基本的 APP 都想在里面加上 im 的功能,但是都没有很简单方便的方法。。。。

    如何解决???

    最近也在研究即时通讯相关的东西,很多问题都没有解决的办法,好像说明这块的文档也是特别的少?

    希望大家给我推荐一些开源的 im 相关项目,带我研究以后分享给大家~_~


    为什么每个论坛都没有 IM 板块,憋逼我自己自己开一个 im 的论坛!!!好吧我其实就是准备这么做的。。。。

    第 1 条附言  ·  355 天前

    最终

    最终理想中的IM是什么样?

    距离写这篇文章过去了3个多月。3个月可以做很多事情,比如真的开发一套开源免费的IM系统。

    从刚开始想这个问题,到如今实现的IM,过程还是挺煎熬的,特别是做这种开源的产品,以及其中遇到很多想抗拒却抗拒不了的问题,不过结果总还是好的。

    所以这里来把这么一款开源免费的产品提供给大家一起享用~

    DuckChat

    👉 DuckChat-Server

    👉 DuckChat-Android

    👉 DuckChat-iOS

    93 回复  |  直到 2019-02-15 16:45:57 +08:00
        1
    SAM2O2O   2018-07-16 11:00:07 +08:00
    希望大家可以给一些建议和想法,关于 im 的,怎么让大家不在谈 im 色变?
        2
    yukiww233   2018-07-16 11:08:09 +08:00
    app 集成个 im 还不简单,云旺 融云 环信 云信都是一键接入
    开源的有个蘑菇街的 teamtalk 只是很久没维护了。。
        3
    liudaqi   2018-07-16 11:14:17 +08:00
    im 能用容易,好用无底啊。所以结果就是用户都只用几个“好用”的的 im 去了,零碎的 im 工具开发者也更加没动力开发了。另外还有一个原因是,纯粹的 im 工具不赚钱啊,不如搭个电商立马就可以卖货了
        4
    SAM2O2O   2018-07-16 11:15:29 +08:00   ♥ 1
    云旺 融云 环信 云信这种都是接别人的 sdk,服务端都是别人的,我在寻找一种方式可以让开发 im 的可以很方便集成开源 sdk,包括 android/ios 的 sdk,web 端,开源服务端
        5
    lshero   2018-07-16 11:16:46 +08:00   ♥ 2
    各类通讯 SDK 云服务外
    还有 openfire 这一些用 XMPP 协议的开源的
    还有 http://www.52im.net/这种接地气的社区的
        6
    SAM2O2O   2018-07-16 11:17:20 +08:00
    “ im 能用容易,好用无底” 这句话说的很好,我和朋友准备在弄一些开源 im,全套的 im 包括前后端开源,这样是不是可以解决这个问题?
        7
    SirLostWhite   2018-07-16 11:17:52 +08:00
    一般 app 都是用环信

    自己做的话也比较简单吧

    用 nodejs socketio 可以

    用 php workerman 也可以

    都是有官方 demo 的

    其他语言的不太了解

    我们公司在小程序上集成了 im 后端用的 socketio 做的

    还挺简单的
        8
    SAM2O2O   2018-07-16 11:18:57 +08:00
    之前我也使用过 openfire,但是觉得集成方式不好,im 当成其中一个模块,而不是需要自己改代码的方式,个人想法。就一中方式,im 不在需要自己开发?
        9
    SirLostWhite   2018-07-16 11:20:36 +08:00
    workerman 的 demo 可以参考
    https://github.com/walkor/workerman-chat
        10
    daigouspy   2018-07-16 11:21:39 +08:00 via Android
    直接 telegram 二次开发
        11
    SAM2O2O   2018-07-16 11:21:58 +08:00
    socketio 这个服务端的性能怎么样了
        12
    hushulin   2018-07-16 11:23:15 +08:00
    研究开发自己的 IM 系统近三年,奈何没有好的变现方式,逐渐放弃这个。谅解我是个面向 RMB 编程的程序员\狗头
        13
    SAM2O2O   2018-07-16 11:24:04 +08:00
    telegram 二次开发这个想法好,我觉得可以开个 telegram 二次开发的论坛!大家一起做会更有意思
        14
    SAM2O2O   2018-07-16 11:25:08 +08:00
    @hushulin 那有没有想法把三年的开发成果开源出来了,我也好研究一下
        15
    hushulin   2018-07-16 11:26:36 +08:00
    @SAM2O2O 需要整理,我都好久没有捡起来过了
        16
    SAM2O2O   2018-07-16 11:27:24 +08:00
    @hushulin 如果需要可以帮你一起整理~在这个过程中一起了解下,你开个 github 地址把我拉进去了?
        17
    Phant0m   2018-07-16 11:28:02 +08:00
    首先,做得好的 IM 并不是 lz 说的这些,好的 IM 都被 ban 了 大家都用不上,所以只能用这些辣鸡
        18
    imydou   2018-07-16 11:29:41 +08:00   ♥ 1


    同样需求,调研了好久,暂时没有比较适合二次开发(自己)的。
        19
    hushulin   2018-07-16 11:31:59 +08:00
    @SAM2O2O github 不便开放,还没想过开源。加我 qq:MTAyMzc1MzAzMQ==
        20
    imydou   2018-07-16 11:32:42 +08:00
    中意 wire,但是开发语言冷门,上手慢。协议也不太适合用于商业用途。
        21
    grayon   2018-07-16 11:33:26 +08:00
    蘑菇街开源的 TeamTalk
        22
    SAM2O2O   2018-07-16 11:37:42 +08:00
    @imydou 是的,最好是有全套 前后端 开源的,自己可以集成在自己项目中,比如有一整套并且方便集成 ,性能也比较靠谱的,现在我有这个项目做一套开源的出来
        23
    t6attack   2018-07-16 11:38:19 +08:00   ♥ 1
    楼主经历过 QQ 尾巴满天飞的时代没?早年被“ qq 广告特工”骚扰过没?
    都没遇到过?那卖铁观音的总遇到过吧?

    企鹅苦练十年功,技术与法律手段齐用,才解决了 QQ 尾巴、广告群发等问题。

    新开发一套 IM ?要么没多少人用,成为鸡肋。
    如果用户多了?更多问题会铺面而来。这是个无底洞。

    如果每个论坛都配上 IM 系统,那么里面大部分都将是群发的垃圾信息。
        24
    hushulin   2018-07-16 11:39:45 +08:00
    这块市场基本被抢占完了,什么百度个推,什么极光推送,感觉现在做,比较难竞争过
        25
    SAM2O2O   2018-07-16 11:49:12 +08:00
    @t6attack 明白你说的,但至少做技术,更希望可以有这样一中东西,有生于无。
        26
    zakokun   2018-07-16 11:54:22 +08:00
    你到底想做一个完整的前后端聊天软件还是说搞明白 IM 技术细节?
    聊天软件本身就不应该是个百花齐放的事情,从古至今都不是, 再说 IM 有什么高大上了搞得以为 QQ 在搞技术垄断一样
    如果你想知道技术细节,网上文章很多啊,初学者都会去学一个"通过 socket 搭建一个聊天室"什么的
        27
    imydou   2018-07-16 11:56:10 +08:00
    @t6attack #23 企业内部的应用场景还是有需求的,特别是私有化部署。
        28
    koodai   2018-07-16 11:57:46 +08:00 via iPhone
    环信基于 xmpp 开发的,免费额度太低,付费极贵,用不起啊!
    自己基于 xmpp/jabber 做,坑多。
        29
    Tink   2018-07-16 12:11:07 +08:00 via iPhone
    @t6attack #23 企业里需要私有化啊
        30
    Tink   2018-07-16 12:12:55 +08:00 via iPhone
    @zakokun #26 确实不需要百花齐放,但是还是要有私有化部署方案的
        31
    SAM2O2O   2018-07-16 12:13:10 +08:00
    @koodai 所以如果有全套的开源 im,我想大家都会乐意使用的。。。
        32
    SAM2O2O   2018-07-16 12:14:03 +08:00
    @Tink 的确企业内部私有化的 im 是一条很好的路,而且需求应该也不少
        33
    zakokun   2018-07-16 12:16:25 +08:00
    @Tink #29 主要我觉得是因为聊天软件是个强客户端的系统 而客户端要做的好用是非常不容易的,所以开源的,私有化部署的方案很难让人接受,就像图形化操作系统一样.开源的操作系统多不多?但是图形化的操作系统谁愿意用免费开源的哦
        34
    ytmsdy   2018-07-16 12:24:56 +08:00
    企业内部的 IM 都被 RTX 占领了吧。
        35
    avastms   2018-07-16 12:28:49 +08:00 via Android   ♥ 1
    你们都没听过 mattermost 吗
        36
    lguan   2018-07-16 12:30:32 +08:00
    rocket.chat,但是,能否真的绕过 qq 和微信,就看推行力了,我觉得,很难....
        37
    koodai   2018-07-16 12:32:46 +08:00 via iPhone
    @zakokun 这是不一样的。
    我们的场景可能是在自己的 app 内集成客服,在自己的应用环境内使用。而不是做一款 toC 的通用软件。
    难用、简陋,某种意义上来说都不是问题!
    够用,简单,足够。
        38
    Felldeadbird   2018-07-16 12:37:50 +08:00
    开源的 IM 都有很多了。 再做也感觉没什么市场。
        39
    emlcj   2018-07-16 12:43:55 +08:00
    之前 teambition 的简聊不错,而且也开源了……
        40
    mengdisheng   2018-07-16 12:48:41 +08:00
    有也不想开源啊。。我公司自己做的为什么要开源。。。一个好的底层后端开发成本挺高的
        41
    liujinsong668   2018-07-16 12:56:11 +08:00   ♥ 1
    mattermost 了解一下,gitlab 无缝对接
        42
    changnet   2018-07-16 13:03:04 +08:00 via Android
    搞这个的人挺多,死了的项目更多。看下内网通,喧喧之类的 im 就知道。对于小企业而言,不可能有个团队去维护一个 im,对于大公司,花点钱直接买解决方案更划算
        43
    zjsxwc   2018-07-16 13:13:04 +08:00   ♥ 1
    搞个网游服务器框架改下不就好了,im 本质就是网游,doge
        44
    SoulSleep   2018-07-16 13:19:59 +08:00
    别的不说,上面推荐的环信经过实际的使用。。。简直就是垃圾,这种企业还是趁早倒闭的好,屌屌的;资深一堆 bug 和限制,拿项目的时候吹的好,实施阶段垃圾的不行~~

    各位避而远之吧
        45
    zbinlin   2018-07-16 13:24:00 +08:00
    可以看下 rocket.chat
        46
    StanMarsh   2018-07-16 13:25:57 +08:00
    @t6attack

    那个铁观音广告简直跟苍蝇一样,当年每天见到好多次。
    本来喝茶一视同仁,后来遇到铁观音就想起垃圾广告,从此产生了抵制心理。
        47
    hyyou2010   2018-07-16 13:31:15 +08:00
    你所谓的全套开源什么的,你首先得有个边界,因为 im 现在已经扩展到很大范围了。最初,就是文字聊天,后来朝多个方向发展:
    1,从文字到图片,语音,视频,视频直聊。。。
    2,各种群组管理,各种定制化
    3,各种内容沉积管理,比如添加到日程电邮,整理为文档
        48
    Immortal   2018-07-16 13:34:23 +08:00
    之前也有想详细了解下现代 im 的架构和技术难点 也没找到很系统的资料
    有个 b 站的 goim 还有找到的就是 5l 那个社区
        49
    SAM2O2O   2018-07-16 13:47:29 +08:00
    @hyyou2010 全套开源什么 ,是指客户端可以集成开源的 sdk,服务端代码也开源可以搭建在自己的服务器,支持同够用的文字,图片,语音,其他的用扩展的方式集成在项目中。大致的项目,现在准备跟几个朋友一起弄这个东西
        50
    SAM2O2O   2018-07-16 13:48:37 +08:00
    @Immortal 我也是因为你说的这个原因,想构建这样一个社区 + 提供开源一整套解决办法,就是让 im 能让大家很方便的在自己的项目中使用
        51
    UnPace   2018-07-16 13:49:09 +08:00
    LayUI 出了个 LayIM:
    http://layim.layui.com/
        52
    SAM2O2O   2018-07-16 13:49:40 +08:00
    @zbinlin @lguan rocket.chat 也有了解过,不过体验了一下,体验感觉一般,不知道你们觉得怎么样
        53
    keramist   2018-07-16 13:50:23 +08:00 via Android
    nextcloud 自带 可以内网外网一起聊
        54
    SAM2O2O   2018-07-16 13:51:32 +08:00
    @mengdisheng 这个就看个人想法了,可以选择不对外开放,也可以选择共享开源技术
        55
    nullen   2018-07-16 14:01:08 +08:00
    我会劝你不要自己搞。
        56
    SAM2O2O   2018-07-16 14:16:02 +08:00
    @nullen 为何?
        57
    simapple   2018-07-16 14:24:30 +08:00
    有用 php 开发吗?简单的 im 开发接入,关键词 workerman
        58
    icyalala   2018-07-16 14:25:44 +08:00
    想要完全开源可控的技术方案,用户量小的话有大量可用的项目,而且无论如何都会需要定制来满足自己特殊的需求。
    问题是在国内,IM 不是个单纯的技术问题。
    审核怎么做,ZF 事务找谁联系,黑产广告的策略怎么跟进,这都是要持续投入和运营的。
        59
    tanranran   2018-07-16 14:34:23 +08:00
        60
    banksiae   2018-07-16 18:03:01 +08:00   ♥ 1
    可以研究一下 goim,基本的 im 功能都有,性能也可以。自研的话,有基础可以玩一玩,没基础基本没头绪。主要就是长短链,私有协议,压缩加密,内容存储。比较有意思的东西。
    目前开源的,上过生产的,好像就是 goim 了
        61
    beimenjun   2018-07-16 18:39:14 +08:00
    没价值。

    小公司自然用融云环信之类的解决方案。

    稍微有点实力有点追求的,自然会自己根据自己公司的情况来选型和构架。说白了,IM 真的对稍微有些规模的公司来说有什么特别难的技术屏障吗?似乎真的没有,投钱投时间就出来了。

    你的项目优势基本只是为那些资源丰沛又不想怎么开发的公司服务的,那么这种公司有吗?也许有,但是我觉得支撑不了一个市场。

    “没人开采的金山”,是一种很常见的幻觉。
        62
    vanxy   2018-07-16 18:43:05 +08:00   ♥ 1
    因为 IM 对于一般的 APP 来说,有个这功能就行,并不在乎有多好用。所以会采取集成环信等第三方 sdk,只需花费少量时间就可集成完成,并且基本能满足需求。而如果自研,要考虑的东西太多了:客户端推送、长链接、服务端存储、文件、IM 协议... 自己核心功能不做而花时间做 IM 不是本末倒置么。

    而论坛的 IM 就是个伪需求,论坛的私信已经满足需求了。集成 IM 完全没有意义:im 需要挂在后台,就需要一直开着论坛页面,这一点都不现实呀。。。

    最后,IM 这东西,做到容易,做好太难
        63
    nihiue   2018-07-16 18:44:39 +08:00 via Android
    ms lync 看一下呗
        64
    LINAICAI   2018-07-16 18:55:01 +08:00
    你要不是有 qq 那样的宏大计划,还是不要重复造轮子了
        65
    hlwjia   2018-07-16 18:57:50 +08:00
    我就坐等楼主的开源
        66
    j   2018-07-16 20:08:17 +08:00
    我觉得你对 im 的复杂度估计得太低了。rocket.chat 是开源的,但是光他的客户端代码就够几十个人的团队开发很久了。开发个半成品几十行代码很容易,想要做好,恩,没有任何想法。
        67
    Priest   2018-07-16 20:15:47 +08:00 via Android
    我司在用 mattermost,日常使用没问题,除了查找历史消息功能比较矬外。
        68
    c6h6benzene   2018-07-16 20:52:27 +08:00 via iPhone
    团队即时协作或者沟通? Slack 或者 Microsoft Teams (后者最近刚免费)好像不错。
        69
    CForce   2018-07-16 21:32:20 +08:00   ♥ 4
    在大公司做了好几年专职 IM 的来说两句。IM 这个东西涉及的太多了,就像楼上说的,做到容易,做好太难,我还想说一句:功夫在诗外。
    服务器从推送通道维护(光这个就很难做好)、消息数据存储结构(这个往往和具体的业务架构有关,比如群聊的业务形态和一对一肯定不一样,如果牵扯到群聊,又有群成员管理,对不同成员推送不同内容消息等),消息推送队列的维护(每个用户当前已读位置);
    客户端的通道保活,端上的消息存储和清理,消息的顺序合并,性能和省电问题,消息洪峰处理(比如大的群聊或者直播间),包括聊天的界面;
    后续扩展的话,如果是一个成熟的增量同步上下行结构,在这个基础上可做的事情也非常多。
        70
    CForce   2018-07-16 21:43:16 +08:00
    其实 IM 在一个应用中,往往是属于一个基础功能的角色,更多的是适当地调整来找到适合自己业务形态的 IM 策略,比如电商(A 家)和社交(T 家)的 IM 策略肯定是不一样的,但是最基础的那些都大同小异。
        71
    ericls   2018-07-16 21:43:50 +08:00 via iPhone
    Slack 这么不普及吗?
    Microsoft teams 也免费了 但是没有 linux 端
        72
    zlzdbf   2018-07-16 21:56:47 +08:00 via Android
    现在在一家互联网公司,做自研的 IM,技术难度不大,但是做好真的不容易
        74
    lguan   2018-07-17 00:49:48 +08:00
    @SAM2O2O 还不错,该有的都有,更新也很频繁,但团队的人是不是还是会跑到微信或者 qq 上,我只能尽量要求他们到 rocket 上进行,特别是针对重要的事情进行讨论的时候
        75
    msg7086   2018-07-17 01:44:06 +08:00
    我们现在用的 mattermost。
        76
    a86261566   2018-07-17 02:56:15 +08:00
    @zjsxwc 确实 我司之前就是这样做
        77
    chendeshen   2018-07-17 06:58:00 +08:00 via Android
    群晖 chat 套件
        78
    jjs4500   2018-07-17 08:22:35 +08:00
    美团出的 IM:大象,了解一下。
        79
    zchlwj   2018-07-17 09:03:43 +08:00
    我司最开始是自研 im,现在换腾讯 tim 了
        80
    zzzmode   2018-07-17 09:24:49 +08:00
        81
    macha   2018-07-17 10:56:59 +08:00
    我现在维护一个简易版的,都是公司内部人在用,消息都是基于 HTTP 的。如果需求只是点对点收发消息的话,后端就搞一个消息队列就行了。前端倒是复杂一点,尤其是 PC 客户端,没有现成的轮子。Teamtalk 我研究过一点,可以参考的地方很多。
        82
    HackerOO7   2018-07-17 11:20:22 +08:00
    以前公司基于 https://chatsecure.org/ 做个一个内部 IM,XMPP
        83
    SAM2O2O   2018-07-17 11:28:09 +08:00
    @j 目前我们也在做一款开源的,你说的对但是客户端的代码就需要很大的开发量,我们陆续准备开放出来,目前服务端已经开源了
        84
    SAM2O2O   2018-07-17 11:33:49 +08:00
    @CForce 感谢~基础的那些都大同小异,我们就是想做这些基础的有共性的东西,然后开源给大家,目前已经开始做了,之前也做了一款开源的,下个目标是全端开源
        85
    SAM2O2O   2018-07-17 11:37:18 +08:00
    @jjs4500 美团的大象,只是类似钉钉,并没有开源吧?
        86
    SAM2O2O   2018-07-17 11:39:05 +08:00
    @macha 基于 http 的?那消息是通过寻轮来获取的?现在 im 都是用长连接实现,很少有使用 http 的了
        87
    SAM2O2O   2018-07-17 11:41:49 +08:00
    @vebuqi 你也用的开源阿卡信?
        88
    SAM2O2O   2018-07-17 11:42:53 +08:00
    @zchlwj 都是没有更好的方法提供给你们,也没有持久的维护,所以用 tim 也是情理之中
        89
    macha   2018-07-17 13:47:37 +08:00
    @SAM2O2O
    基于长连接的,服务器返回一个 trunk 头,3 分钟以后超时断开。
        90
    alvince   2018-08-16 10:42:04 +08:00
    话说你们都没人知道 GoBelieve-IM 吗。。
        91
    wzw   270 天前
    @imydou #18 最后选了什么? 第一个?
        92
    imydou   270 天前
    @wzw #91 放弃~
        93
    shadowpms   241 天前
    shadow-forum.com 来 我们讨论下 ,我想做 IM 不是 i 一天两天
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2372 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 15:22 · PVG 23:22 · LAX 08:22 · JFK 11:22
    ♥ Do have faith in what you're doing.