Skip to content

Commit 75a5262

Browse files
committed
Add "noack" option to completely disable managed ack on websockets
Also move to passing an "options" object instead of continuing to add individual parameters to the listen() function. Signed-off-by: Andrew Richardson <[email protected]>
1 parent aeae1c2 commit 75a5262

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

lib/firefly.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -612,26 +612,34 @@ export default class FireFly extends HttpBase {
612612
subscriptions: string | string[] | FireFlySubscriptionBase,
613613
callback: FireFlyWebSocketCallback,
614614
socketOptions?: WebSocket.ClientOptions | http.ClientRequestArgs,
615-
afterConnect?: FireFlyWebSocketConnectCallback,
615+
fireflySocketOptions?: Partial<FireFlyWebSocketOptions> | FireFlyWebSocketConnectCallback,
616616
): FireFlyWebSocket {
617+
if (typeof fireflySocketOptions === 'function') {
618+
// Legacy compatibility (afterConnect callback passed as 4th arg)
619+
fireflySocketOptions = <FireFlyWebSocketOptions>{
620+
afterConnect: fireflySocketOptions,
621+
};
622+
}
617623
const options: FireFlyWebSocketOptions = {
618624
host: this.options.websocket.host,
619625
namespace: this.options.namespace,
620626
username: this.options.username,
621627
password: this.options.password,
622-
subscriptions: [],
623-
autoack: false,
624628
reconnectDelay: this.options.websocket.reconnectDelay,
625629
heartbeatInterval: this.options.websocket.heartbeatInterval,
626-
socketOptions: socketOptions,
627-
afterConnect: afterConnect,
630+
autoack: false,
631+
...fireflySocketOptions,
632+
socketOptions,
633+
subscriptions: [],
628634
};
629635

630636
const handler: FireFlyWebSocketCallback = (socket, event) => {
631637
this.queue = this.queue.finally(() => callback(socket, event));
632-
this.queue.then(() => {
633-
socket.ack(event);
634-
});
638+
if (!options.noack) {
639+
this.queue.then(() => {
640+
socket.ack(event);
641+
});
642+
}
635643
};
636644

637645
if (Array.isArray(subscriptions)) {

lib/interfaces.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ export interface FireFlyWebSocketOptions {
7676
username?: string;
7777
password?: string;
7878
ephemeral?: FireFlyEphemeralSubscription;
79-
autoack: boolean;
79+
autoack?: boolean;
80+
noack?: boolean;
8081
reconnectDelay: number;
8182
heartbeatInterval: number;
8283
socketOptions?: WebSocket.ClientOptions | http.ClientRequestArgs;

0 commit comments

Comments
 (0)