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

2019-06-18 08:58:22 +08:00
 yibeishui
26612 次点击
所在节点    Android
97 条回复
f2ck
2019-06-18 10:57:24 +08:00
透传
bobuick
2019-06-18 11:03:24 +08:00
推送+长连方式(长连不一定是 ws)
应用内用长连是很正常的, 应用外用 app push.
kulove
2019-06-18 11:05:10 +08:00
推送,接收到改变下状态就好了
Ponze
2019-06-18 11:33:28 +08:00
这如果要有点赞和 diss 的话就好了。 哈哈哈哈
mengxianliang
2019-06-18 11:38:19 +08:00
推送
liyaoo
2019-06-18 11:39:27 +08:00
什么是气泡提醒?
wbf1013
2019-06-18 12:05:30 +08:00
不就是一推送么
Sapp
2019-06-18 12:05:39 +08:00
@shawndev 你这一看就是道听途说了一些 http2 的内容,server push 和常规理解(你的理解) 的推送根本不是一个推送。
changdy
2019-06-18 12:35:26 +08:00
@vance
@zwh2698
@zk123
楼上几位 不同意是 WS,那请问会是什么的? 另外 push sdk 是通过什么实现的?


@Sapp 看了下 HTTP2 push 大概是说 推送 css 之类的? 这样的话 貌似的确 和我之前理解的很不一样.
lonelygo
2019-06-18 12:54:44 +08:00
就不#某一楼了,不过一个消息处理的小技巧或者知识点。
就上升到不知道就不适合这个行业了。
我就好奇了,以这个规模的问题为标准,随便抛一个不知道就不适合行业了。
那估计“这个行业”就要结束了。
比不知道更可怕的是自大。
Reficul
2019-06-18 12:57:43 +08:00
如果 ws 是因为长连接代价太大的话,难道推送就不靠长连接了咩。。。
mengyaoss77
2019-06-18 13:10:29 +08:00
我觉得楼上说透传的就像 leetcode 用标准库直接排序一样。:-)
NicholasYX
2019-06-18 13:24:14 +08:00
消息队列?
shawndev
2019-06-18 13:24:49 +08:00
@Sapp 翻了一下文档,如你所说。server push 由 web 服务器配置,并行加载网页资源。而不是在获取 html 后解析当中用到的资源再请求。
AndroidEngineer
2019-06-18 13:27:34 +08:00
为啥不能是 websocket ? push sdk 不用长链接吗,靠什么实现的?
xnode
2019-06-18 13:28:24 +08:00
socket 或者 mqtt 治疗的长连接 后端是 消息队列
HarryQu
2019-06-18 13:32:10 +08:00
我之前做过 Android 和 iOS , 做的应用使用的是 消息推送 SDK 。
Android 使用的 小米 /华为 , 应用在前台透传,应用在后台通知栏推送。
iOS 的用的是系统的 APNs , 机制和 Android 类似。

缺点是不论 Android 和 iOS , 集成系统的消息推送都有延迟。
我们公司当时没有即时通讯的业务,前台、后台 消息推送一把梭哈 , 所以经常被用户投诉,别人回复消息,自己收不到。
但是应用在后台的时候,只能使用系统的消息推送。

因此,像微信这类即时通讯软件,应用在前台用的是自己的长连接,在后台用的是系统的推送 。

至于抖音,没有了解过,如果为了保证推送的及时率和成功率,应该采取和微信一样的机制。
如果抖音比较懒的话,那就用直接用系统的推送。

具体 IM 的原理 和 Android 消息推送原理 与 APNs。因水平有限,我也没做过这些,就不评论了。
yibeishui
2019-06-18 13:55:05 +08:00
@liyaoo 抖音,评论过后,继续浏览其它视频。如果有人赞了你的评论或者回复了你的评论。底部“消息”那个按钮就会浮出一个气泡提醒你。
Vdream
2019-06-18 14:24:07 +08:00
应该就是类似 push 的推送,可能加入厂商白名单,可以长期保活接通知吧
bengcaca
2019-06-18 14:27:46 +08:00
都是什么鬼。没用过抖音,只说即时通讯。

如果要做到及时提醒,那肯定是有一个长链接的,不管是 http2、websocket、mptt,以上都是应用层协议,不管传输层是基于 tcp 还是 udp,本质都是一个长链接。推送就是用长链接实现的,不然你以为 server 端的消息怎么主动推到 client?

关于长链接维持,纯技术角度而言,长链接就不需要维持,如果网络正常且中间路由不做任何处理,就算没心跳,你一年后这个 tcp 依然能通讯。心跳只是业务层的逻辑( tcp 的 keepalive 算是协议层),心跳是可以优化的,有的可能几分钟一次心跳。

关于长链接的维持,微信十几亿用户都能做,抖音几亿用户为啥不能做?

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

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

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

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

© 2021 V2EX