【发布时间】:2023-03-21 06:30:01
【问题描述】:
我正在制作一个 PWA,用户可以在其中回答表单。我希望它也离线,所以当用户填写表格并且没有互联网连接时,回复将在他重新在线时上传。为此,我想捕获请求并在联机时发送它们。我想基于以下教程:
https://serviceworke.rs/request-deferrer_service-worker_doc.html
我已经成功实现了 localStorage 和 ServiceWorker,但是似乎没有正确捕获到 post 消息。
这里是核心功能:
function tryOrFallback(fakeResponse) {
// Return a handler that...
return function(req, res) {
// If offline, enqueue and answer with the fake response.
if (!navigator.onLine) {
console.log('No network availability, enqueuing');
return;
// return enqueue(req).then(function() {
// // As the fake response will be reused but Response objects
// // are one use only, we need to clone it each time we use it.
// return fakeResponse.clone();
// });
}
console.log("LET'S FLUSH");
// If online, flush the queue and answer from network.
console.log('Network available! Flushing queue.');
return flushQueue().then(function() {
return fetch(req);
});
};
}
我使用它:
worker.post("mypath/add", tryOrFallback(new Response(null, {
status: 212,
body: JSON.stringify({
message: "HELLO"
}),
})));
路径正确。它检测实际发布事件何时发生。但是,我无法访问实际请求(try 或 fallback "req" 中显示的请求基本上是空的),并且响应在显示时具有自定义状态,但不包含消息(正文为空)。所以不知何故,我可以检测到 POST 何时发生,但我无法获得实际消息。
如何解决?
提前谢谢你,
格热戈茨
【问题讨论】:
标签: reactjs caching service-worker progressive-web-apps