Skip to content

Commit a2d3d29

Browse files
committed
Add support for batched websocket delivery
Signed-off-by: Andrew Richardson <[email protected]>
1 parent 8cad25e commit a2d3d29

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/interfaces.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,17 @@ export interface FireFlyEventDelivery extends Omit<FireFlyEnrichedEvent, 'type'>
185185
};
186186
}
187187

188+
export interface FireFlyEventBatchDelivery {
189+
type: 'event_batch';
190+
id: string;
191+
subscription: {
192+
id: string;
193+
name: string;
194+
namespace: string;
195+
};
196+
events: FireFlyEventDelivery[];
197+
}
198+
188199
// Datatypes
189200

190201
export type FireFlyDatatypeFilter = operations['getDatatypes']['parameters']['query'];

lib/websocket.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
FireFlyEphemeralSubscription,
66
FireFlyWebSocketOptions,
77
FireFlyEventDelivery,
8+
FireFlyEventBatchDelivery,
89
} from './interfaces';
910
import Logger from './logger';
1011

@@ -19,7 +20,10 @@ function buildEphemeralQueryParams(sub: FireFlyEphemeralSubscription) {
1920
}
2021

2122
export interface FireFlyWebSocketCallback {
22-
(socket: FireFlyWebSocket, data: FireFlyEventDelivery): void | Promise<void>;
23+
(
24+
socket: FireFlyWebSocket,
25+
data: FireFlyEventDelivery | FireFlyEventBatchDelivery,
26+
): void | Promise<void>;
2327
}
2428

2529
export class FireFlyWebSocket {
@@ -166,7 +170,7 @@ export class FireFlyWebSocket {
166170
}
167171
}
168172

169-
ack(event: FireFlyEventDelivery) {
173+
ack(event: FireFlyEventDelivery | FireFlyEventBatchDelivery) {
170174
if (this.socket !== undefined && event.id !== undefined) {
171175
this.socket.send(
172176
JSON.stringify({
@@ -179,7 +183,7 @@ export class FireFlyWebSocket {
179183
}
180184

181185
async close(wait?: boolean): Promise<void> {
182-
const closedPromise = new Promise<void>(resolve => {
186+
const closedPromise = new Promise<void>((resolve) => {
183187
this.closed = resolve;
184188
});
185189
this.clearPingTimers();

0 commit comments

Comments
 (0)