跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • c/s 端做消息推送通知的话,如何选择? websocket 还是选择长轮询?
未分類
14 8 月 2020

c/s 端做消息推送通知的话,如何选择? websocket 还是选择长轮询?

c/s 端做消息推送通知的话,如何选择? websocket 还是选择长轮询?

資深大佬 : tctc4869 10

要做实时数据显示功能,当然这里主要指手机客户端,在客户端后台挂起,实时监听,如果有内容则判断是否要显示通知栏。那么是选择长轮询,还是用 websocket ?然后服务端增加 websocket 服务端处理。

在这个帖子里: https://www.v2ex.com/t/477876?r=julyclyde 。有 V 友指出“长连的资源消耗不比轮询低”,“受网络限制比较大,需要处理好重连”

那么到底要怎样考虑做选择?

大佬有話說 (27)

  • 資深大佬 : unco020511

    使用第三方推送 SDK

  • 資深大佬 : xuanbg

    手机你不走系统通知?

  • 資深大佬 : chinvo

    手机你还想保活当流氓咋地?

    当然是老老实实系统推送 /FCM 啊

  • 資深大佬 : Hanggi

    Firebase 国内收得到吗?跟其他国内厂商比哪个好?
    有谁用过 mobpush 吗?跟极光比哪个好?

  • 主 資深大佬 : tctc4869

    @xuanbg 系统通知?你的意思要离线推送么?

  • 資深大佬 : internelp

    @Hanggi 我用过 mobpush,因为做的是监控 APP,需要消息到达及时,它不满足,转战阿里云了。

  • 資深大佬 : coderxy

    第三方推送吧,不然 app 不在进程中时你收不到的。

  • 主 資深大佬 : tctc4869

    @coderxy
    @unco020511

    第三方推送?安卓第三方推送听说是群魔乱舞,不同的手机要接入不同的第三方接入服务。

  • 資深大佬 : unco020511

    @tctc4869 目前的最优选择就是第三方,你如果要自己开发,想想准备投入多少人力

  • 資深大佬 : BlackGrasshopper

    统一推送联盟

  • 主 資深大佬 : tctc4869

    @unco020511 我目前的系统通知是在 app 没有被安卓系统杀死的情况下进行消息通知

  • 資深大佬 : coderxy

    @tctc4869 可以接第三方的,比如极光推送啥的。 因为你自己搞会有很多问题,比如像小米啥的它在后台限制了后台长连接,你要想在 app 不启动的情况下推送消息下去,比如走小米的推送渠道。 还有好几家都是这样。 所以最好的方案就是走极光一类的第三方推送。

  • 資深大佬 : chinvo

    @Hanggi #4 FCM 国内收得到的, 除了被禁止装 Google Play Service 的华为

  • 主 資深大佬 : tctc4869

    @coderxy 在 app 不被系统杀死的情况下,可以用轮询 http 或 websocket 直接与自家后台服务联通做 app 消息通知把

  • 資深大佬 : stevenkang

    凡是手机上 app 想自启动做推送,不用统一推送的,见一个杀一个。

  • 資深大佬 : learningman

    @chinvo 前提是用户有 GMS
    摸摸良心,国内有多少用户装了 GMS 。。。真要推送还得当流氓

  • 資深大佬 : chinvo

    @learningman #16 7.0 及之后除了华为都自带 GMS 的

  • 資深大佬 : IGJacklove

    @tctc4869 看你愿不愿意花钱了,肯花钱别人都帮你做好了.

  • 資深大佬 : learningman

    @chinvo MIUI 和 ColorOS 这种的应该都没有吧,原生安卓才多少人啊

  • 主 資深大佬 : tctc4869

    @IGJacklove 你的意思是安卓系统通知不用第三方系统通知服务都会出问题用不了。必须要花钱?

  • 資深大佬 : IGJacklove

    @tctc4869 没有这个意思,我的意思是想少点麻烦就多花点钱,想自己弄就麻烦一点,自己做取舍。

  • 資深大佬 : opengps

    app 没有被杀死的情况下,用原生 socket 更实时

  • 主 資深大佬 : tctc4869

    @opengps 那么你觉得 websocket,或 http 长轮询,哪个方式更好。

  • 資深大佬 : opengps

    @tctc4869 http 轮训比较简单。建议首选,做大了在考虑 websocket
    websocket 实时性好,但是大部分人没经历过长连接项目,可能得有些坑需要踩。作为一个客户端,可控性更低,有问题难以分析

  • 資深大佬 : unco020511

    @tctc4869 不管是从消息送达率,还是耗电,还是投入 /产出比 上来说,使用第三方推送都会比你自己做要好,你要考虑好;你使用 http 轮询不用考虑耗电问题吗,再说现在的 rom 很多会限制你后台的活动,再其次你使用 socket 长连接,你的心跳包间隔是多少,怎么根据不同运营商来优化心跳频率,还有国内 row 有诸多改动和限制,也会涉及适配的问题;以上你都得考虑

  • 資深大佬 : sioncheng

    手机后台存活不了多少时间,不要想啦。 退而求其次,有数据需要刷新了,发送 APP 推送( ios apns 或者国内 android 厂商推送服务),提醒用户打开 APP 然后拉取最新数据。

  • 資深大佬 : 0x8192dd

    移动端直接利用推送通道不就完事了?接个推送 SDK 就行了,保活就别想了
    都 2020 年了,移动端没有后台挂起这种说法,用户退出应用之后,就是靠推送通道推送消息,用户点了消息,唤起应用,重连,你用 iOS,微信启动之后有个“收取中”,就是执行重连和数据同步。

    轮询和 socket 的区别主要是在应用位于前台的时候
    如果你是要做 IM,或者股票 K 线图那样实时的东西,那必须用 socket 让客户端接收服务器主动下发的数据,如果只是个什么中奖通知,工单反馈之类实时性要求不高的推送,那么在移动端轮询或者写一些触发点(比如切页面)来查询就可以了。

    简而言之:需要频繁主动下发 – socket ;需要用户在某一页面的时候更新数据状态 – 轮询

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具