You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A push service receives a network request, validates it and delivers a push message to the appropriate browser.
Push Service 可以接收网络请求,校验该请求并将其推送给合适的浏览器客户端。Push Service 还有一个非常重要的功能:当用户离线时,可以帮我们保存消息队列,直到用户联网后再发送给他们。
目前,不同的浏览器厂商使用了不同的 Push Service。例如,chrome 使用了 google 自家的 FCM(前身为GCM),firefox 也是使用自家的服务。那么我们是否需要写不同的代码来兼容不同的浏览器所使用的服务呢?答案是并不用。Push Service 遵循 Web Push Protocol,其规定了请求及其处理的各种细节,这就保证了,不同的 Push Service也会具有标准的调用方式。
PWA浅析
PWA
是Google
在2016
年开始推广的项目,这几年的发展一直也是不温不火。但是不得不否认,PWA
对提升Web
应用的安全、性能和体验有着很大的意义,非常值得我们去了解与学习。本文将从以下几个方面对PWA
这项应用技术进行解析,并适当地抛出一些问题。希望各位看官在能再进一步学习之前,对PWA
能有个较为全面的了解。废话不多说,直接上菜~ 🍲简要
正文
⭐ 什么是PWA?
PWA
,全称Progressive Web App
, 翻译过来即是渐进式网页应用。在对其做介绍之前,不妨先贴上维基百科和MDN上的定义:Wiki
MDN
通过上面的定义我们注意到几个关键字:渐进式,普通网页,原生应用,Web API 等等。很明显的,
PWA
本质还是我们的网页应用,它并不是特指某项技术,它是一个涵盖性术语,是一系列现代Web
技术的组合,其主要目的是为了在网页应用中实现与原生应用相近的用户体验。👉 抛出问题1,怎样理解渐进式?
⭐ PWA技术清单预览
接下来继续让我们看下这套技术清单主要包括哪些:
下面针对这套组合拳逐一介绍下
Service Worker
PWA
核心部分,是一项比较新的Web
技术,旨在提高WebApp
的离线缓存能力。Service Worker
顾名思义,翻译过来就是服务工人,是服务于前端页面的后台线程,基于 Web Worker 实现。有着独立的js
运行环境,分担、协助前端页面完成前端开发者分配给后台执行的任务。基于它可以实现拦截和处理网络请求、消息推送、静默更新、事件同步等服务。👉 抛出问题2,
Web Worker
是什么?和Service Worker
又是什么关系?特点
worker
线程,独立于当前网页进程,有自己独立的worker context
。install
,就永远存在,除非被手动unregister
DOM
HTTPS
环境下才能工作Promise
实现工作原理
Service Worker
之后,开始下载并解析执行Service Worker
文件,同时触发worker
线程的install
事件。install
事件回调成功执行,则开始激活Service Worker
, 同时触发worker
线程的activate
事件,如果install
事件回调执行失败,则生命周期进入Error
终结状态,终止生命周期。Service Worker
就能够控制作用域下的页面资源请求,监听fetch
事件。Service Worker
被unregister
或者有新的Service Worker
版本更新,则当前Service Worker
生命周期完结,进入Terminated
终结状态。👉 抛出问题3,
Service Worker
更新机制是怎样的?需要注意哪些点?兼容性
至少还是绿了一片了,很好。😉
Web App Manifest
Web App Manifest
是指一个以JSON
格式存储的Web
应用程序清单,提供有关应用程序的信息(如名称,作者,图标和描述等)。其目的是将Web
应用程序安装到设备的主屏幕,为用户提供更快的访问和更丰富的体验。一个
manifest.json
的内容会像如下, 这里需要注意的是添加到主屏幕时在 Android 设备至少需要提供 192 像素以上的图标才会显示。兼容性
乍看之下还是比较惨烈,我们只看
Chrome
就好。🤕Push&Notifications
简介: Push API 赋予了客户端页面从第三方服务器接受消息通知的能力,而 Notifications API 则主要用于向用户展示桌面通知。通过这对
API
我们可以轻松实现消息的推送与通知。Push实现原理
在Push中有三个登场角色,分别是:
浏览器: 就是我们的客户端
Push Service: 专门的Push服务,你可以认为是一个第三方服务,目前
chrome
与firefox
都有自己的Push Service
。理论上只要浏览器支持,可以使用任意的Push Service
后端服务: 指我们自己的后端服务
推送流程图如下:(来自Web Push协议草案)
结合时序图的各个步骤,我们可以将其分为订阅(subscribe)与推送(push)两部分来看。
subscribe,首先是订阅:
Push Message,然后是推送:
👉 抛出问题4,
Push Service
是什么?兼容性
兼容性较好的浏览器还是主要集中
Chrome
,FireFox
,Edge
这些,但是对比兼容性更头疼的一个点还是接收推送在国内必须得翻墙这个点。😭Background Sync
简介:Background Sync (后台同步功能) 是指通过
Service Worker
和SyncManage
实现延迟用户行为,直到用户网络连接稳定后再重新执行请求操作的一个功能。工作原理:
Service Worker
中监听sync
事件sync
, 主要用到registration.sync.register()
方法Service Worker
的sync
事件,在该监听回调中进行相关操作,例如向后端发起请求Service Worker
中对服务端返回的数据进行处理👉 抛出问题5,为什么断网了 Service Worker 仍能维持请求?在处理数据过程中Service Worker 和前端页面是怎么交互的?
兼容性
唔...
sync API
基本还是只有Google
自家的Chrome
可用 😷当然,
PWA
并不局限于上述几个特性,除此之外还有诸如Cache API
缓存、App Shell
和骨架屏等等各种可以扩展的方面,文章主要列举了比较核心的几个特性进行解析。⭐ PWA实际应用的一些思考
待补充
参考链接
The text was updated successfully, but these errors were encountered: