我的Chrome扩展程序背景页面设置为活动页面,即大多数时间它都处于睡眠状态,除非某些已注册的事件监听器将其唤醒。
我希望能够偶尔从我的服务器发送消息到我的扩展程序的个人用户的事件页面。它们不一定显示为桌面通知,而是由后台脚本决定如何处理任何传入消息。例如,它可能很好地将一些信息存储在localstorage中。如果用户客户端在发送消息时处于离线状态,则理想情况下,一旦它重新联机,它就会被传送。
我想避免每次后台脚本清醒时定期轮询我的服务器,尽管这是一个明显的解决方案。
因此,我的问题是,是否可以在我的事件页面中注册一种特殊类型的事件,以便一旦有来自我的服务器的传入消息,它就会唤醒并触发一些功能。理想情况下,服务器消息不是对所有用户的一般广播,而是对特定用户的有针对性的消息。
我有什么选择?
我读到了服务工作者及其推送API,但似乎它们只是慢慢推广到Chrome扩展程序。我不确定他们是否已经为浏览器的稳定版本做好了准备,但没有找到任何关于它们如何使用扩展的文档。我还阅读了一些关于Google Cloud Messaging的内容,但不赞成使用新的昂贵的Firebase解决方案。
服务工作者的功能类似于代理服务器,允许您修改请求和响应,将其替换为自己的缓存中的项目等。虽然Chrome有自己的缓存/安装方法,但需要显示Chrome扩展程序。因此,当您尝试拦截服务工作者向Chrome扩展程序的注册时,将会出现错误。
有关更多信息,请参阅
见相关SO帖子: