mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-09-22 18:32:58 +00:00
Move EventStream to external module
This commit is contained in:
+14
-14
@@ -37,7 +37,7 @@ import bodyParser from 'body-parser';
|
|||||||
import cookieParser from 'cookie-parser';
|
import cookieParser from 'cookie-parser';
|
||||||
import forceSSL from './forcessl.mw.js';
|
import forceSSL from './forcessl.mw.js';
|
||||||
|
|
||||||
import EventEmitter from 'events';
|
import Stream from './eventStreamSource.js';
|
||||||
|
|
||||||
|
|
||||||
const sanitizeBrew = (brew, accessType)=>{
|
const sanitizeBrew = (brew, accessType)=>{
|
||||||
@@ -514,27 +514,27 @@ app.get('/account', asyncHandler(async (req, res, next)=>{
|
|||||||
return next();
|
return next();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Event Stream
|
// Create Event Stream source for pages to listen to
|
||||||
const Stream = new EventEmitter;
|
|
||||||
|
|
||||||
// After Stream starts, send initStream event
|
|
||||||
setTimeout(()=>{
|
|
||||||
Stream.emit('push', 'initStream', { time: (new Date).toString() });
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
app.get('/stream', (req, res)=>{
|
app.get('/stream', (req, res)=>{
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
'Content-Type' : 'text/event-stream',
|
'Content-Type' : 'text/event-stream',
|
||||||
'Cache-Control' : 'no-cache',
|
'Cache-Control' : 'no-cache',
|
||||||
'Connection' : 'keep-alive'
|
'Connection' : 'keep-alive',
|
||||||
|
'Content-Encoding' : 'none'
|
||||||
});
|
});
|
||||||
|
|
||||||
Stream.on('push', (event, data)=>{
|
Stream.on('sendUpdate', (event, data)=>{
|
||||||
// console.log('Event:', event, 'Data:', data);
|
console.log('Event:', event, '\nData:', data);
|
||||||
res.write(`data: ${JSON.stringify({ ...data, eventType: event })}\n\n`);
|
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
|
// Local only
|
||||||
if(isLocalEnvironment){
|
if(isLocalEnvironment){
|
||||||
// Login
|
// Login
|
||||||
|
|||||||
@@ -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);}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user