mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-11-04 22:38:43 +00:00
Initial pass at individual brew streams
This commit is contained in:
@@ -54,12 +54,13 @@ const SharePage = (props)=>{
|
|||||||
fetchThemeBundle(undefined, setThemeBundle, currentBrew.renderer, currentBrew.theme);
|
fetchThemeBundle(undefined, setThemeBundle, currentBrew.renderer, currentBrew.theme);
|
||||||
|
|
||||||
// listen for changes in the brew version
|
// listen for changes in the brew version
|
||||||
const eventSource = new EventSource('/stream');
|
const eventSource = new EventSource(`/stream/${props.brew.shareId}`);
|
||||||
eventSource.addEventListener('message', (evt)=>{
|
eventSource.addEventListener('message', (evt)=>{
|
||||||
const messageData = JSON.parse(evt.data);
|
const messageData = JSON.parse(evt.data);
|
||||||
|
|
||||||
if(messageData.eventType == 'brewUpdated'){
|
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');
|
console.log('should fetch brew');
|
||||||
fetchUpdatedBrew();
|
fetchUpdatedBrew();
|
||||||
}
|
}
|
||||||
@@ -68,7 +69,8 @@ const SharePage = (props)=>{
|
|||||||
|
|
||||||
return ()=>{
|
return ()=>{
|
||||||
document.removeEventListener('keydown', handleControlKeys);
|
document.removeEventListener('keydown', handleControlKeys);
|
||||||
eventSource.close();
|
eventSource.removeEventListener('message');
|
||||||
|
// eventSource.close();
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
+12
-4
@@ -196,19 +196,27 @@ export default async function createApp(vite) {
|
|||||||
|
|
||||||
// Create Event Stream source for pages to listen to
|
// Create Event Stream source for pages to listen to
|
||||||
let initStreamListener = false;
|
let initStreamListener = false;
|
||||||
app.get('/stream', (req, res)=>{
|
app.get('/stream/:id', (req, res)=>{
|
||||||
|
const id = req.params.id;
|
||||||
|
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
'Content-Type' : 'text/event-stream',
|
'Content-Type' : 'text/event-stream',
|
||||||
'Cache-Control' : 'no-cache',
|
'Cache-Control' : 'no-cache, no-transform',
|
||||||
'Connection' : 'keep-alive',
|
'Connection' : 'keep-alive',
|
||||||
'Content-Encoding' : 'none'
|
'Content-Encoding' : 'none'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
res.write(`data: ${JSON.stringify({ init: Date.now().toString(), shareId: id, eventType: 'message' })}\n\n`);
|
||||||
|
|
||||||
if(!initStreamListener){
|
if(!initStreamListener){
|
||||||
initStreamListener = true;
|
initStreamListener = true;
|
||||||
Stream.on('sendUpdate', (event, data)=>{
|
Stream.on('sendUpdate', (event, data)=>{
|
||||||
if(isLocalEnvironment) { console.log('Event:', event, '\nData:', data); }
|
if(isLocalEnvironment) {
|
||||||
res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`);
|
console.log('Event:', event, '\nData:', data);
|
||||||
|
}
|
||||||
|
if(id == data.shareId) {
|
||||||
|
res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`);
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user