Skip to content

Commit ca6d226

Browse files
fix(websockets): run handle connection hook once nestjs#3704
1 parent 4399402 commit ca6d226

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export function compareElementAt(
2+
prev: unknown[],
3+
curr: unknown[],
4+
index: number,
5+
) {
6+
return prev && curr && prev[index] === curr[index];
7+
}

packages/websockets/web-sockets-controller.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import { NestGateway } from './interfaces/nest-gateway.interface';
1515
import { SocketEventsHost } from './interfaces/socket-events-host.interface';
1616
import { SocketServerProvider } from './socket-server-provider';
17+
import { compareElementAt } from './utils/compare-element.util';
1718

1819
export class WebSocketsController {
1920
private readonly metadataExplorer = new GatewayMetadataExplorer(
@@ -119,7 +120,9 @@ export class WebSocketsController {
119120
public subscribeConnectionEvent(instance: NestGateway, event: Subject<any>) {
120121
if (instance.handleConnection) {
121122
event
122-
.pipe(distinctUntilChanged())
123+
.pipe(
124+
distinctUntilChanged((prev, curr) => compareElementAt(prev, curr, 0)),
125+
)
123126
.subscribe((args: any[]) => instance.handleConnection(...args));
124127
}
125128
}

0 commit comments

Comments
 (0)