@block65/webcrypto-web-push (英语)
使用 Web Push 协议和 Web Crypto API 发送通知( 使用 Web Push 协议和 Web Crypto API 工作) 节点JS、Cloudflare工人、邦和德诺)
信件被加密为 aes128gcm 二. 说明
RFC 8291 (韩语),并用
自愿援助 vapid 计划从
RFC 8292 (英语)两者都得到
当前推取服务,包括苹果.
每条消息都被加到一个常数 4096 octets, 所以密码的长度是
不透露平话长度,身体在大小范围内保持一推
服务必须接受。 因此,最大有效载荷为3993字节.
订阅端点必须是 https。 。 。 .
安装
使用 pnpm :
pnpm add @block65/webcrypto-web-push
使用 npm :
npm install @block65/webcrypto-web-push
配置
字体
说明 这是一套无害环境管理方案。 如果您使用 Typescript, 您需要 设置
moduleResolution改为node16, (中文(简体) ),nodenext或者说bundler以达到 解决软件包导出.
使用量
import {
buildPushPayload,
type PushSubscription,
type PushMessage,
type VapidKeys,
} from '@block65/webcrypto-web-push';
// `env` could be `process.env` or `import.meta.env` depending
// on your platform or build tooling
const vapid: VapidKeys = {
subject: env.VAPID_SUBJECT,
publicKey: env.VAPID_SERVER_PUBLIC_KEY,
privateKey: env.VAPID_SERVER_PRIVATE_KEY,
};
// Obtained from the client using PushManager subscribe() method:
// https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe
const subscription: PushSubscription = {
endpoint: 'https://fcm.googleapis.com/fcm/send/...',
expirationTime: null,
keys: {
p256dh: '...',
auth: '...',
},
};
const message: PushMessage = {
data: "You've got mail!",
options: {
ttl: 60,
},
};
const payload = await buildPushPayload(message, subscription, vapid);
// send the payload to the subscription endpoint using your favourite HTTP client
const res = await fetch(subscription.endpoint, payload);
console.log(res.status); // 201
从1.x升级
API不变. 1.x版本发送了遗产 aesgcm 内容编码和
草案 WebPush 授权计划,苹果公司均不接受.
消费者需要 aesgcm 编码应该停留在1.x上.
许可证
这个包裹根据麻省理工学院的许可证获得许可. 更多请参见 LICENSE 文件 资料.