Initial pass at individual brew streams

This commit is contained in:
G.Ambatte
2026-10-07 00:07:56 +13:00
parent aeea09b6f3
commit 885feb31b0
2 changed files with 17 additions and 7 deletions
@@ -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();
};
}, []);
+11 -3
View File
@@ -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); }
if(isLocalEnvironment) {
console.log('Event:', event, '\nData:', data);
}
if(id == data.shareId) {
res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`);
};
});
}
});