话说要是自己实现一套 IM 的功能难度大吗?

2022-05-25 09:48:46 +08:00
 godleon

前言

想自己做一个 IM 的包实现起来难度大吗?

MQTT 协议,java ,netty+socket

问题

特别想问一下,就是这个"语音消息" 不是语音通话,一条条的语音消息,这个是怎么实现的呀?还有像聊天记录的存储格式了,有没有热心 v 友能给一些思路或者一些开源的参考~ 

ps: 语音消息,问了一个大佬,他说发语音消息的时候,先录音成.mp3 文件到本地,然后发送到另一端,另一端接收播放这个.mp3 ,这....

7425 次点击
所在节点    Java
55 条回复
unnamedhao
2022-05-25 10:45:41 +08:00
看承载量,10 个人用跟 10 亿人用的难度差别还是很大的
lyy16384
2022-05-25 10:58:05 +08:00
https://github.com/OpenIMSDK
用开源的吧,感觉完整的 IM 不是一个人就能搞定的项目
lonewolfakela
2022-05-25 11:03:18 +08:00
@XiLingHost #18 mp3 的专利不是已经过期了么
tanxnative
2022-05-25 11:03:54 +08:00
可以看看 https://github.com/stream-stack/store-operator 云原生消息中间件
基于此实现 IM 很简单
tigerstudent
2022-05-25 11:04:39 +08:00
opus 调用不麻烦,能压缩到原音频的十分之一
keppelfei
2022-05-25 11:42:46 +08:00
实现一套不难,最最简单的 websocket 就能搞一套,难得是集群扩展承载力。
libook
2022-05-25 11:49:05 +08:00
可以把语音数据部分和传输部分解耦,不管啥格式的数据都可以在传输通道里走,这样你可以先上 MVP 方案用现成的编码格式,比如 mp3 ,等核心部分都搞定了,再看看是不是要替换语音编码。

除非你现在已经把 IM 核心功能都搞定了,就剩语音了。
wxlwsy
2022-05-25 11:57:55 +08:00
计算机上,除开算法问题, 其他问题不难, 难的是如何落地。
DrX
2022-05-25 13:06:50 +08:00
做一个能简单互相发消息的 IM 系统不难,假设这个难度是 1 。

在这个基础上做出一个不但要能发消息,还要用起来比较顺手的,已经非常困难了,非常多的细节需要考虑。关于这个我就举个例子:发送者可以自由发送五花八门各种格式的视频,接受者要能直接点看。这个别看就一句话,实际上做起来非常非常非常困难,基本上你需要集成一整套视频编码、解码、播放系统进去。这一步难度大约是 100 。

然后再在用起来比较顺手的基础上,做一套能支持海量用户的系统,这个就不是普通公司能完成的事情了,这个难度大约是 10000 。
markgor
2022-05-25 13:26:00 +08:00
可是一套 IM 不止是发语音。
beimenjun
2022-05-25 13:38:13 +08:00
做出来的 IM 是给一个人用的还是给一百万人用的,不是同一个级别的难度。

玩具你随便弄弄,弄成点对点都可以说是 IM 吧。

正儿八经的 IM ,服务端要考虑服务的拓展性、性能、灾备、安全性、合规。

落到移动客户端,这个问题可能还涉及客户端的耗电、内存使用、流量使用、数据状态的同步、各类错误处理。
xiangyuecn
2022-05-25 13:53:26 +08:00
别问,问就是 上传+下载
oppoic
2022-05-25 14:05:47 +08:00
关键问题是满足多大用户量。
如果只是几个人发发消息,用 ajax 轮询服务端也做了是吧
imndx
2022-05-25 14:10:33 +08:00
@xiangyuecn 正解。
yufeng0681
2022-05-25 15:00:42 +08:00
一个 IM 系统的讨论,偏离到语音消息的传送细节了。
有空去看看 GSMA 国际规范 RCS ,里面讲述的内容大于 IM , 但是能更好的帮助你了解 IM 系统
jstony
2022-05-25 16:21:55 +08:00
这么说吧,当年学校机房里写了个 im ,可以同学之间聊天,类似飞鸽传书,同一年,qq 第一版面市。
poembre
2022-05-25 18:14:12 +08:00
- 前些天, 用 B 站 毛剑大佬开源的 goim 改了一个 客服聊天

https://github.com/poembro/goim-demo
pengtdyd
2022-05-25 18:16:10 +08:00
答:自己写个 IM 难度几乎为 0 ,重点是有人用。
byron
2022-05-25 18:54:33 +08:00
dudubaba
2022-05-25 19:06:13 +08:00
不难啊,就像现有的卖 IM 服务的企业根本不是卖技术本身,而是卖数据存储的,流量带宽大了贼贵。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX