Skip to content

Commit 539d538

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 16f7ee5 commit 539d538

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
@@ -548,26 +548,34 @@ export default class FireFly extends HttpBase {
548548
subscriptions: string | string[] | FireFlySubscriptionBase,
549549
callback: FireFlyWebSocketCallback,
550550
socketOptions?: WebSocket.ClientOptions | http.ClientRequestArgs,
551-
afterConnect?: FireFlyWebSocketConnectCallback,
551+
fireflySocketOptions?: Partial<FireFlyWebSocketOptions> | FireFlyWebSocketConnectCallback,
552552
): FireFlyWebSocket {
553+
if (typeof fireflySocketOptions === 'function') {
554+
// Legacy compatibility (afterConnect callback passed as 4th arg)
555+
fireflySocketOptions = <FireFlyWebSocketOptions>{
556+
afterConnect: fireflySocketOptions,
557+
};
558+
}
553559
const options: FireFlyWebSocketOptions = {
554560
host: this.options.websocket.host,
555561
namespace: this.options.namespace,
556562
username: this.options.username,
557563
password: this.options.password,
558-
subscriptions: [],
559-
autoack: false,
560564
reconnectDelay: this.options.websocket.reconnectDelay,
561565
heartbeatInterval: this.options.websocket.heartbeatInterval,
562-
socketOptions: socketOptions,
563-
afterConnect: afterConnect,
566+
autoack: false,
567+
...fireflySocketOptions,
568+
socketOptions,
569+
subscriptions: [],
564570
};
565571

566572
const handler: FireFlyWebSocketCallback = (socket, event) => {
567573
this.queue = this.queue.finally(() => callback(socket, event));
568-
this.queue.then(() => {
569-
socket.ack(event);
570-
});
574+
if (!options.noack) {
575+
this.queue.then(() => {
576+
socket.ack(event);
577+
});
578+
}
571579
};
572580

573581
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)