抖音上评论后如果有人点赞我的评论,会马上收到气泡提醒,这是什么原理实现的?

2019-06-18 08:58:22 +08:00
 yibeishui
31944 次点击
所在节点    Android
97 条回复
zk123
2019-06-18 22:47:18 +08:00
不好意思回复的有点草率,确实是一个长连接。如果非要以 ws 协议帧的实现方式也是可以,甚至见过以 HTTP 协议为载体 xml 格式的即时通信。

不过 ws 协议满足不了企业上对即时通信的反馈性,安全性,以及健壮性等诸方面的需求,且握手过程稍繁琐(协议需要从 HTTP 升级),所以 ws 不太适用终端这种场景。
lizhuoli
2019-06-18 22:51:35 +08:00
不就是隐式推送吗,这么玄乎……
limbo0
2019-06-18 23:18:40 +08:00
如果只是单向通信,sse 更轻便点
hyyou2010
2019-06-18 23:22:36 +08:00
@wangxiaoaer

我认为这是两个不同的途径。推送是走第三方通道到手机系统,再到 app,socket 完全是 app 内部的事。
dangyuluo
2019-06-19 04:22:17 +08:00
方法太多了,http comet, websocket, 或者用一些现有的服务,比如有个叫野狗的(只是听说过)
zzl22100048
2019-06-19 08:29:23 +08:00
@cominghome 脑子正常的架构师怎么做?
TomVista
2019-06-19 08:46:17 +08:00
求个标准答案,
Stlin
2019-06-19 08:56:16 +08:00
我也觉得是队列 MQ
bullettrain1433
2019-06-19 09:14:50 +08:00
插眼来求标准答案
exploreXin
2019-06-19 09:23:07 +08:00
推荐阅读《 UNIX 网络编程》两卷本。
dntsgd
2019-06-19 09:40:44 +08:00
应该说,是类似微信朋友圈的原理
TomVista
2019-06-19 09:46:51 +08:00
@dntsgd 应该说,是类似快手点赞的原理 🐶狗头保命
xiangyuecn
2019-06-19 10:01:45 +08:00
websocket 就不是 socket 了吗,干嘛歧视呢😒

猜测推送:

如果 app 活着,就优先走自己的长连接,把消息直接推到手机,毫秒级。

app 死了、消息不可达,就走厂商的推送通道:apns、各大厂商、渣渣第三方,难免受制于人。也许低价值的也许就放弃推送,广告那些玩意高价值死命也要推到客户端。
justRua
2019-06-19 10:05:42 +08:00
听公司那些做 IM 聊得一般使用一些推送服务,如果自己在程序里实现的话用户把进程杀了他就什么消息都收不到了,华为 oppo vivo 都有自己的手机推送服务,和他们对接就好了,还有些第三方推送 极光推送 什么的。
Canon1014
2019-06-19 10:10:09 +08:00
插眼等正确答案
dongxinb
2019-06-19 10:15:41 +08:00
关闭 app 情况下走推送,开着 app 个人还是倾向于走长连的。
长连成本没那么高的,几个大厂 app 哪个没长连? api 请求什么的好多 app 也都走长连(为了快)。
抖音本身就有聊天功能,复用同个通道就行。
raiz
2019-06-19 10:21:36 +08:00
使用某种“推送”技术,目的是从服务端往客户端发送消息,在这个例子里就是把被评论的事件告诉 APP。
推送使用的具体网络技术就有多种可能,websocket 是基于 tcp 长连接的方式。还有使用“频繁定时拉取”来实现“推送”的方式,实时性在于频繁程度。
长连接需要维护 TCP 的状态,确实耗费资源,所以使用统一的推送服务可以多个 APP 共享一个推送通道,降低服务端资源使用。
现在很多 APP 都使用不同的推送服务,甚至每个手机厂商自己还弄一套,导致推送通道冗余,手机后台线程很多,这也是国内安卓手机卡顿体验差的一个因素。 对于开发者也是一种痛苦,本来 Android 使用谷歌推送就一份逻辑搞定,现在被迫取集成 N 多种推送。
zyh94946
2019-06-19 10:48:26 +08:00
那些楼上不知道的就别瞎回复了,说什么透传、推送,你们和没说有什么区别?
limuyan44
2019-06-19 10:59:53 +08:00
苹果有官方的推送服务器和接口有什么可争的搞不懂,安卓稍微乱一点而已
zmlu
2019-06-19 11:10:01 +08:00
这有啥好讨论的?

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

https://tanronggui.xyz/t/574945

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

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

© 2021 V2EX