mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-10-13 04:49:33 -05:00
Handle connecting directly to the event stream URL
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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[]) {
|
||||
|
||||
Reference in New Issue
Block a user