소개
표준 Chrome 확장 프로그램에서 서비스 워커는 이는 데이터를 가로채거나 장기간에 걸쳐 상태를 유지하는 것이 중요한 시나리오에 문제를 제기합니다. 이 문서에서는 이러한 제한을 극복하기 위한 다양한 방법을 살펴봅니다.
버그 악용(Chrome 110)
Chrome 110에는 서비스 작업자를 허용하는 버그가 있습니다. 비동기 Chrome을 호출하여 30초 더 오랫동안 활성 상태를 유지하려면 API.
// background.js const keepAlive = (i => state => { if (state && !i) { if (performance.now() > 20e3) chrome.runtime.getPlatformInfo(); i = setInterval(chrome.runtime.getPlatformInfo, 20e3); } else if (!state && i) { clearInterval(i); i = 0; } })(); async function doSomething() { try { keepAlive(true); const res = await (await fetch('........')).text(); // ........... } catch (err) { // .......... } finally { keepAlive(false); } }
오프스크린 API(Chrome 109 )
이 API를 사용하면 서비스 워커를 활성 상태로 유지하기 위해 30초마다 메시지를 보내는 오프스크린 문서를 생성할 수 있습니다.
background.js:
async function createOffscreen() { await chrome.offscreen.createDocument({ url: 'offscreen.html', reasons: ['BLOBS'], justification: 'keep service worker running' }).catch(() => {}); } chrome.runtime.onStartup.addListener(createOffscreen); createOffscreen();
NativeMessaging API(Chrome 105)
nativeMessaging에 연결 chrome.runtime.connectNative를 통한 호스트는 서비스 워커를 오랫동안 실행되도록 유지합니다.
// background.js const connect = () => { chrome.runtime.connectNative('nativemessaging_host').onDisconnect.addListener(connect); }; connect(); // Start the connection on startup
WebSocket API(Chrome 116)
30초 미만으로 WebSocket 메시지를 교환하면 서비스 워커가 활성 상태로 유지됩니다.
헌신 탭
지속적인 배경 페이지 역할을 하는 확장 페이지가 있는 전용 탭을 엽니다.
위 내용은 Chrome 확장 프로그램의 서비스 워커를 지속적으로 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!