Handle connecting directly to the event stream URL

This commit is contained in:
Samuel Elliott
2022-11-16 12:13:48 +00:00
parent a52c45af36
commit 20bab43981
5 changed files with 30 additions and 2 deletions

View File

@@ -515,6 +515,7 @@ class Server extends HttpServer {
while (!req.socket.closed) {
try {
debug('Updating data for event stream %d', stream.id);
const result = await this.handlePresenceRequest(req, null, presence_user_nsaid, true);
stream.sendEvent('update', 'debug: timestamp ' + new Date().toISOString());
@@ -553,6 +554,8 @@ class Server extends HttpServer {
});
}
debug('Error in event stream %d', stream.id, err);
res.end();
break;
}

View File

@@ -91,12 +91,25 @@ export class ResponseError extends Error {
export class EventStreamResponse {
json_replacer: ((key: string, value: unknown) => any) | null = null;
private static id = 0;
readonly id = EventStreamResponse.id++;
constructor(
readonly req: Request,
readonly res: Response,
) {
res.setHeader('Cache-Control', 'no-store');
res.setHeader('Content-Type', 'text/event-stream');
console.log('[%s] Event stream %d connected to %s from %s, port %d%s, %s',
new Date(), this.id, req.url,
req.socket.remoteAddress, req.socket.remotePort,
req.headers['x-forwarded-for'] ? ' (' + req.headers['x-forwarded-for'] + ')' : '',
req.headers['user-agent']);
res.on('close', () => {
console.log('[%s] Event stream %d closed', new Date(), this.id);
});
}
sendEvent(event: string | null, ...data: unknown[]) {