diff --git a/public/service-worker.js b/public/service-worker.js new file mode 100644 index 0000000..68699b3 --- /dev/null +++ b/public/service-worker.js @@ -0,0 +1,28 @@ +function openWebSocket() { + console.log('open websocket'); +} + +self.addEventListener('install', function(event) { + self.skipWaiting(); + console.log('Installed', event); +}); +self.addEventListener('activate', (event) => { + event.waitUntil(openWebSocket()); +}); + +self.addEventListener('push', (event) => { + const data = event.data.json(); + + const title = data.title || 'New Message'; + const options = { + body: data.body || 'You have a new message', + icon: 'path/to/icon.png', + badge: 'path/to/badge.png', + vibrate: [200, 100, 200], + // Other notification options + }; + + event.waitUntil( + self.registration.showNotification(title, options) + ); +}); diff --git a/src/main.jsx b/src/main.jsx index b3711cd..45f194d 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -74,3 +74,30 @@ ReactDOM.createRoot(document.getElementById('root')).render( // ); + +if ('serviceWorker' in navigator) { + const wb = import.meta.env.VITE_SERVICE_WORKER_ENTRY; + console.log('if service worker', wb); + window.addEventListener('load', () => { + console.log('listen load'); + navigator.serviceWorker.register('/service-worker.js').then( + (registration) => { + console.log('Service Worker registered:', registration); + }, + (error) => { + console.error('Service Worker registration failed:', error); + }, () => { + console.log('final'); + } + ); + +// navigator.serviceWorker.register(wb).then( +// (registration) => { +// console.log('vite-plugin-pwa Service Worker registered:', registration); +// }, +// (error) => { +// console.error('vite-plugin-pwa Service Worker registration failed:', error); +// } +// ); + }); +} diff --git a/vite.config.js b/vite.config.js index 98a5297..3079b2d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -13,9 +13,10 @@ const buildDatePlugin = () => { }; // PWA plugin const manifestForPlugIn = { - registerType: 'prompt', - // includeAssests: ['/src/assets/logo-gh.png'], + // registerType: 'prompt', // registerType: 'autoUpdate', + registerType: 'none', + // includeAssests: ['/src/assets/logo-gh.png'], workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}'], }, @@ -55,7 +56,7 @@ const manifestForPlugIn = { }; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react(), WindiCSS(), buildDatePlugin(), VitePWA(manifestForPlugIn)], + plugins: [react(), WindiCSS(), buildDatePlugin(), ], server: { host: '0.0.0.0', },