推送通知可以代替 web-socket 吗?
Posted
技术标签:
【中文标题】推送通知可以代替 web-socket 吗?【英文标题】:Can the push-notifications replace web-socket? 【发布时间】:2018-09-27 22:59:13 【问题描述】:我需要在 ios 和 android 上开发一个具有实时功能的应用程序:应用程序用户需要定期实时共享代码,无需轮询。
我通常使用网络套接字来执行此操作,并且仅将推送通知用于向用户发送附加通知(当应用程序处于后台时)。因此,推送通知对应用程序逻辑没有影响(这是一个优点)。
我的疑问是,我可以用 Firebase 推送通知(用于接收)+ Rest API(用于发送)完全取代 web-socket 通信吗? 推送通知是否足够可靠?
一般来说,推送通知可以代替 websocket 来实现应用程序逻辑吗?
解决方案 1(网络套接字 + 推送通知)
User A -> App (websocket) -> Server (web socket + push-notification) -> App -> User B
用户 A
解决方案 2(推送通知 + REST API)
用户 A -> 应用程序(rest-api)-> 服务器(推送通知)-> 应用程序 -> 用户 B
用户 A
【问题讨论】:
我对同样的概念非常感兴趣。你试过了吗?我想推送通知的“唯一”失败将是事实,它们不是实时的,但允许一些滞后 【参考方案1】:事实上这是可能的。但是这个选择有几个严重的缺陷:
首先,推送通知需要用户权限,如果用户阻止了推送通知,您将被阻止(在您的示例中,这意味着您的 RestApi 最多将停止工作)并且很难更改此选择以普通用户,用户应该去浏览器设置...等
浏览器对WebPush 的支持远小于WebSocket
您的服务器和客户端之间可能存在延迟,因为此类调用的 CallStack 远远超过正常的 WebSocket 连接。非常粗略的方案:YourServer -> PushServer(如 Firebase 推送通知)-> 客户端 每一步都有很多检查。
【讨论】:
以上是关于推送通知可以代替 web-socket 吗?的主要内容,如果未能解决你的问题,请参考以下文章