Для меня я использую Перехватчики .
- Создать перехватчик
- получить Handeshake объект
- аутентифицировать это
Примерно так:
1. На стороне клиента создайте socket
объект с помощью Socket.io
const socket = io(
`YOUR_URL`,
{
"transports": ["websocket", "polling", "flashsocket"],
"query": { "authorization": `Bearer ${token}` } // <= token in here
}
);
создать перехватчик и затем использовать его в контроллере сокета
export const SocketAuth = (): Interceptor => {
return async (invocationCtx, next) => {
const handshake: Handeshake = (invocationCtx.target as any).socket.handshake;
// ...
}
}
@ws('/chat')
export class ChatController {
@intercept(SocketAuth) // <= !!!!
@ws.connect()
async connect(socket: Socket) {
// ...
}
}