PushMessageData - 以各种格式获取服务器发送的推送数据

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

PushMessageDataPush API 的接口,提供了一些方法,使您可以以各种格式获取服务器发送的推送数据。

Fetch API 中的类似方法不同,后者的方法仅允许调用一次,而该接口的方法可以多次调用。

通过 Push API 接收的消息将由 push 服务加密发送,然后由浏览器自动解密,然后才能通过 PushMessageData 接口的方法进行访问。

属性

无。

方法

PushMessageData.arrayBuffer()

将数据提取为 ArrayBuffer 对象。

PushMessageData.blob()

将数据提取为 Blob 对象。

PushMessageData.json()

将数据提取为 JSON 对象。

PushMessageData.text()

将数据提取为纯文本字符串。

实例

self.addEventListener('push', function(event) {
  var obj = event.data.json();

  if(obj.action === 'subscribe' || obj.action === 'unsubscribe') {
    fireNotification(obj, event);
    port.postMessage(obj);
  } else if(obj.action === 'init' || obj.action === 'chatMsg') {
    port.postMessage(obj);
  }
});

规范

规范 状态 备注
Push API
PushMessageData 的定义
工作草案 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持50 未知441 不支持37 不支持
arrayBuffer50 未知441 不支持37 不支持
blob50 未知441 不支持37 不支持
json50 未知441 不支持37 不支持
text50 未知441 不支持37 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持50 未知48 未知37 不支持
arrayBuffer 不支持50 未知48 未知37 不支持
blob 不支持50 未知48 未知37 不支持
json 不支持50 未知48 未知37 不支持
text 不支持50 未知48 未知37 不支持

1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务 worker(和 Push)已被禁用。