javascript - Firebase 消息服务能否成为 websockets/服务器发送事件的可扩展替代品?
问题描述
我正在开发一个 web 应用程序,目前我的应用程序服务器使用服务器发送事件来保持与用户的连接,以有效地将新消息和其他事件等内容推送给他们,而无需他们不断地轮询服务器来询问。
我正在寻找一种实现推送通知的方法,这样我就可以使用Notification Web API在用户位于单独的选项卡中时,或者当他们在手机上运行并且已最小化 Chrome 时向用户发送通知。
经过一番研究,Google Cloud Messaging 似乎已被 Firebase Cloud Messaging 取代,这是推荐用于传递推送通知的服务。看起来它的工作原理是让用户保持与 Firebase 服务器的持久连接,并且您的个人应用服务器向 Firebase 发布请求,以便它们将请求传递给用户。
我的问题:这是否减轻了实现和维护 SSE / WebSocket 服务器的需要?我想知道我是否不能只通过 FireBase 转发我的所有事件,并通过他们的服务将它们传递给用户。也就是说,我将有两类消息都从 Firebase 发送:
一种是典型的“通知”,由用户解释(例如新消息),并且需要通知 API 的本地权限。然后另一种类型是不需要通知的其他“实时”更新(例如正在编辑的消息,或“用户正在输入消息”提示)
这种事情可能/推荐,还是我的理解在某些方面存在缺陷?
解决方案
您所描述的一切似乎都超出了 FCM 的能力。
看起来它的工作原理是让用户保持与 Firebase 服务器的持久连接
实际上,它不是“用户”。它是设备提供的消息传递基础设施。对于 Android,消息通过 Google Play 服务进行路由,该服务作为特权进程在后台运行。对于 iOS,消息通过 Apple 的 APNS。这些组件为各自的服务维护一个打开的套接字,它们比应用程序自己管理套接字更有效,因为应用程序不能无限期地在后台管理套接字——操作系统会在一段时间后关闭它. 这意味着应用程序可以在消息发送后立即唤醒并接收消息。
推荐阅读
- slack - 提交 slack 对话框(Slack API)时出现连接错误
- c# - MongoDB:具有覆盖 ID 和属性的子类出现问题
- asp.net-mvc-4 - 为 SCA 创建 Stripe Dotnet Checkout 会话
- bigcommerce - 在 BigCommerce 中使用 Stencil 的产品元字段
- php - 我将如何获取一个字符串,找到某个字符,添加一个字符,然后继续直到字符串结尾?
- swift - 快速将“10/2”之类的字符串转换为整数值
- python - 计算python程序的数据依赖图
- javascript - JSON到Excel使用javascript
- android - 将长值中的 UTC 时间转换为 Android 中的 GMT 时间
- r - 有没有办法用闪亮的 selectInput() 选择所有子列表?