Move EventStream to external module

This commit is contained in:
G.Ambatte
2025-02-11 09:58:00 +13:00
parent 0a6434fbf3
commit 4ce1cf5eec
2 changed files with 23 additions and 14 deletions
+14 -14
View File
@@ -37,7 +37,7 @@ import bodyParser from 'body-parser';
import cookieParser from 'cookie-parser';
import forceSSL from './forcessl.mw.js';
import EventEmitter from 'events';
import Stream from './eventStreamSource.js';
const sanitizeBrew = (brew, accessType)=>{
@@ -514,27 +514,27 @@ app.get('/account', asyncHandler(async (req, res, next)=>{
return next();
}));
// Event Stream
const Stream = new EventEmitter;
// After Stream starts, send initStream event
setTimeout(()=>{
Stream.emit('push', 'initStream', { time: (new Date).toString() });
}, 1000);
// Create Event Stream source for pages to listen to
app.get('/stream', (req, res)=>{
res.writeHead(200, {
'Content-Type' : 'text/event-stream',
'Cache-Control' : 'no-cache',
'Connection' : 'keep-alive'
'Content-Type' : 'text/event-stream',
'Cache-Control' : 'no-cache',
'Connection' : 'keep-alive',
'Content-Encoding' : 'none'
});
Stream.on('push', (event, data)=>{
// console.log('Event:', event, 'Data:', data);
Stream.on('sendUpdate', (event, data)=>{
console.log('Event:', event, '\nData:', data);
res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`);
});
});
// After Stream starts, send initStream event
setTimeout(()=>{
Stream.emit('sendUpdate', 'initStream', { time: new Date });
}, 1000);
// Local only
if(isLocalEnvironment){
// Login
+9
View File
@@ -0,0 +1,9 @@
import { EventEmitter } from 'events';
const Stream = new EventEmitter;
export default {
emit : function(event) {return Stream.emit(event, ...([...arguments].slice(1)));}, // Arguments doesn't work for arrow functions
on : (event, listener)=>{return Stream.on(event, listener);},
off : (event, listener)=>{return Stream.off(event, listener);}
};