diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index b56d9a6bd..b973602cb 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -54,12 +54,13 @@ const SharePage = (props)=>{ fetchThemeBundle(undefined, setThemeBundle, currentBrew.renderer, currentBrew.theme); // listen for changes in the brew version - const eventSource = new EventSource('/stream'); + const eventSource = new EventSource(`/stream/${props.brew.shareId}`); eventSource.addEventListener('message', (evt)=>{ const messageData = JSON.parse(evt.data); if(messageData.eventType == 'brewUpdated'){ - if(messageData.shareId == currentBrew.shareId && messageData.version != currentBrew.version) { + // Share ID check no longer required + if(messageData.version != currentBrew.version) { console.log('should fetch brew'); fetchUpdatedBrew(); } @@ -68,7 +69,8 @@ const SharePage = (props)=>{ return ()=>{ document.removeEventListener('keydown', handleControlKeys); - eventSource.close(); + eventSource.removeEventListener('message'); + // eventSource.close(); }; }, []); diff --git a/server/app.js b/server/app.js index a15f298ad..bdbe16977 100644 --- a/server/app.js +++ b/server/app.js @@ -196,19 +196,27 @@ export default async function createApp(vite) { // Create Event Stream source for pages to listen to let initStreamListener = false; - app.get('/stream', (req, res)=>{ + app.get('/stream/:id', (req, res)=>{ + const id = req.params.id; + res.writeHead(200, { 'Content-Type' : 'text/event-stream', - 'Cache-Control' : 'no-cache', + 'Cache-Control' : 'no-cache, no-transform', 'Connection' : 'keep-alive', 'Content-Encoding' : 'none' }); + res.write(`data: ${JSON.stringify({ init: Date.now().toString(), shareId: id, eventType: 'message' })}\n\n`); + if(!initStreamListener){ initStreamListener = true; Stream.on('sendUpdate', (event, data)=>{ - if(isLocalEnvironment) { console.log('Event:', event, '\nData:', data); } - res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`); + if(isLocalEnvironment) { + console.log('Event:', event, '\nData:', data); + } + if(id == data.shareId) { + res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`); + }; }); } });