首页 > 解决方案 > (如何)Chrome 扩展程序可以侦听来自我的服务器的消息吗?

问题描述

我的 Chrome 扩展程序的后台页面被设置为一个事件页面,也就是说,大部分时间它都处于休眠状态,除非某个注册的事件监听器将其唤醒。

我希望能够偶尔将消息从我的服务器发送到我的扩展的单个用户的事件页面。它们不一定显示为桌面通知,而是由后台脚本决定如何处理任何传入消息。例如,它可能很好地将一些信息存储在本地存储中。如果用户客户端在发送消息时处于离线状态,则理想情况下,它会在它重新在线时被传递。

我想避免每次后台脚本唤醒时定期轮询我的服务器,尽管这将是一个明显的解决方案。

因此,我的问题是,是否可以在我的事件页面中注册一种特殊类型的事件,以便一旦有来自我的服务器的传入消息,它就会唤醒并触发某些功能。理想情况下,服务器消息不会是对我所有用户的一般广播,而是针对特定用户的有针对性的消息。

我有什么选择?

我阅读了有关服务人员及其推送 API 的信息,但似乎它们只是慢慢地被推广到 Chrome 扩展。我不确定他们是否已经为浏览器的稳定版本做好了准备,也没有找到任何关于他们如何使用扩展的文档。我还阅读了一些关于 Google Cloud Messaging 的内容,但它已被弃用,取而代之的是一种新的昂贵的 Firebase 解决方案。

标签: google-chrome-extensionpush-notificationmessagingservice-worker

解决方案


Service Worker的功能类似于代理服务器,允许您修改请求和响应,用自己的缓存中的项目替换它们等等。虽然Chrome自己的方法来缓存/安装显示 Chrome 扩展程序所需的资源。因此,当您尝试拦截 Service Worker 向 Chrome 扩展程序的注册时,将会出现错误。

有关更多信息,请参阅:

请参阅相关的 SO 帖子:


推荐阅读