mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
fix(server): use ClsInterceptor on websocket (#9859)
https://papooch.github.io/nestjs-cls/considerations/compatibility#websockets
This commit is contained in:
@@ -52,17 +52,28 @@ import { ENABLED_PLUGINS } from './plugins/registry';
|
||||
export const FunctionalityModules = [
|
||||
ClsModule.forRoot({
|
||||
global: true,
|
||||
// for http / graphql request
|
||||
middleware: {
|
||||
mount: true,
|
||||
generateId: true,
|
||||
idGenerator() {
|
||||
// make every request has a unique id to tracing
|
||||
return randomUUID();
|
||||
return `req-${randomUUID()}`;
|
||||
},
|
||||
setup(cls, _req, res: Response) {
|
||||
res.setHeader('X-Request-Id', cls.getId());
|
||||
},
|
||||
},
|
||||
// for websocket connection
|
||||
// https://papooch.github.io/nestjs-cls/considerations/compatibility#websockets
|
||||
interceptor: {
|
||||
mount: true,
|
||||
generateId: true,
|
||||
idGenerator() {
|
||||
// make every request has a unique id to tracing
|
||||
return `ws-${randomUUID()}`;
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
// https://papooch.github.io/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter
|
||||
new ClsPluginTransactional({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { applyDecorators, Logger } from '@nestjs/common';
|
||||
import { applyDecorators, Logger, UseInterceptors } from '@nestjs/common';
|
||||
import {
|
||||
ConnectedSocket,
|
||||
MessageBody,
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
SubscribeMessage as RawSubscribeMessage,
|
||||
WebSocketGateway,
|
||||
} from '@nestjs/websockets';
|
||||
import { ClsInterceptor } from 'nestjs-cls';
|
||||
import { Socket } from 'socket.io';
|
||||
|
||||
import {
|
||||
@@ -131,6 +132,7 @@ interface UpdateAwarenessMessage {
|
||||
}
|
||||
|
||||
@WebSocketGateway()
|
||||
@UseInterceptors(ClsInterceptor)
|
||||
export class SpaceSyncGateway
|
||||
implements OnGatewayConnection, OnGatewayDisconnect
|
||||
{
|
||||
@@ -147,11 +149,13 @@ export class SpaceSyncGateway
|
||||
|
||||
handleConnection() {
|
||||
this.connectionCount++;
|
||||
this.logger.log(`New connection, total: ${this.connectionCount}`);
|
||||
metrics.socketio.gauge('realtime_connections').record(this.connectionCount);
|
||||
}
|
||||
|
||||
handleDisconnect() {
|
||||
this.connectionCount--;
|
||||
this.logger.log(`Connection disconnected, total: ${this.connectionCount}`);
|
||||
metrics.socketio.gauge('realtime_connections').record(this.connectionCount);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user