即时通讯 app 的技术栈

2020-04-05 10:05:36 +08:00
 Sunxb

大佬们,我们公司要自己开发一个即时通讯类型的 app, 请问需要储备那些技术知识。协议现在用的 xmpp,听说要改到 websocket 。我是移动端的开发 ~ 歇歇

6111 次点击
所在节点    程序员
30 条回复
xylophone21
2020-04-05 10:16:29 +08:00
“听说”一词,说明在技术选择和方案设计上,你是被动的。为什么不是我们做了 xxx 分析以后认为应该改到 websocket ?
lneoi
2020-04-05 10:17:50 +08:00
xmpp 好像 app 端用的比较多,对前端十分不友好
tulongtou
2020-04-05 10:30:47 +08:00
grpc,protobuf
djoiwhud
2020-04-05 10:38:07 +08:00
私有 tcp 或者 websock,redis,高可用项目的项目经验。听起来都很容易,不过,没有真实的项目经验,你很难理解 99.999%的送达率需要怎么设计和实现。
cszchen
2020-04-05 10:54:36 +08:00
可以试试 socket.io ,客户端很齐全,安卓、ios 、c 等等都有 sdk,对大部分公司应该都是够用的
reus
2020-04-05 10:58:26 +08:00
xmpp 和 websocket 不能共用? https://tools.ietf.org/html/rfc7395
hst001
2020-04-05 11:15:19 +08:00
没什么特殊需求建议你们还是用三方服务,自己对接接口就好了,没有经验的话,自己实现有很多技术细节不是被你们忽略就会被耗掉大把大把的时间
tairan2006
2020-04-05 11:24:46 +08:00
websocket 是个裸协议啊,应用协议你还是要选一个…当然你可以用 json
jakezh
2020-04-05 12:49:23 +08:00
@jackrelative 求讲一下高送达率怎么保证。
最近在搞一个人命关天的项目,不敢大意
guoziyan
2020-04-05 13:04:23 +08:00
@tairan2006 可以参考 MQTT 的 QOS 1 的实现,然后做好客户端消重。
hantsy
2020-04-05 13:05:45 +08:00
可以使用 STOMP ( WebSocket+RabbitMQ ),用 Rabbit 来缓解消息的压力,这个 Spring 内置支持。
CoderGeek
2020-04-05 13:36:36 +08:00
自验 搭起来成本不大 问题是送达率 一般小厂都会选择三方封装
自己搞得话 从技术方案到成本都要仔细梳理
heiheidewo
2020-04-05 13:58:51 +08:00
推荐腾讯的 IMSDK, 这东西看上去简单( tcp + 私有协议 + protobuf 序列化),实际上有大量的细节需要注意的, 比如可靠性,尤其是各种群消息。
ilylx2008
2020-04-05 15:27:27 +08:00
websocket 挺简单的
tanranran
2020-04-05 15:45:41 +08:00
坑在于后台,前端还好。推荐使用三方 SDK,自己研发,耗时耗力最后还是残缺品
laminux29
2020-04-05 16:15:14 +08:00
IM 的本质就是 rpc,没啥难度。只是业务上,第一次玩的话,最好用 Visio 把流程梳理一下。
murmur
2020-04-05 16:16:43 +08:00
技术栈啊,别搭了,直接用网易的 sdk 吧,原子弹短信就是网易技术
iFlicker
2020-04-05 16:23:46 +08:00
了解一下微信开源的 Mars
djoiwhud
2020-04-05 19:40:18 +08:00
@jakezh 上行和下行消息都加确认机制,不行就重发。仔细考虑重发机制的去重问题。一般公司的量不会涉及扩容问题,也就不涉及消息转发的问题。总的来说,一个小的稳定的系统还是不怎么难做的。
yeqizhang
2020-04-05 19:44:20 +08:00
@jackrelative 感觉 9 少了点,不知道企鹅做到了多少个 9 。而且应该有 ack 保证 100%?

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

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

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

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

© 2021 V2EX