推送订阅已取消订阅或已过期,状态码为 410

push subscription has unsubscribed or expired, with statusCode 410

推送订阅已取消订阅或已过期,statusCode 410,不到 24 小时。

我正在使用网络推送通过 fcm-endpoint 和 vapidDetails 发送通知。 它可以正常工作几个小时,我可以发送通知。但是就在几个小时后,当我尝试从后端发送通知时,saved-fcm-endpoint-subscription 取消订阅或过期 statusCode 410。 我正在 Heroku 中部署和检查。

下面的代码是将订阅对象保存在server/backend.

                  swReg.pushManager.subscribe({
                    userVisibleOnly: true,
                    applicationServerKey: urlB64ToUint8Array(publicKey),
                  }).then(subscriptionJSON => {
                    saveSubscription(subscriptionJSON);
                  })

上面的订阅对象保存到服务器后,几个小时就过期了。

错误如下所示:

{ WebPushError: Received unexpected response code
       at IncomingMessage.<anonymous> (/app/node_modules/web-push/src/web-push-lib.js:316:20)
       at IncomingMessage.emit (events.js:194:15)
       at endReadableNT (_stream_readable.js:1125:12)
       at process._tickCallback (internal/process/next_tick.js:63:19)
     name: 'WebPushError',
     message: 'Received unexpected response code',
     statusCode: 410,
     headers:
      { 'content-type': 'text/plain; charset=utf-8',
        'x-content-type-options': 'nosniff',
        'x-frame-options': 'SAMEORIGIN',
        'x-xss-protection': '1; mode=block',
        date: 'Mon, 27 May 2019 10:11:38 GMT',
        'content-length': '47',
        'alt-svc': 'quic=":443"; ma=2592000; v="46,44,43,39"',
        connection: 'close' } 

ziet-server有问题。

ziet-server 停止支持 write-access,即 fs.write 将不起作用。

所以我无法 save/write subscription-objects 变成 db-files。

我部署到 Heroku,现在它按预期工作。