npm i --save @nestjs/websockets @nestjs/platform-socket.io
npm i -D @types/socket.io
websocket server 를 위해서는 두가지 작업이 필요하다
@WebSocketGateway(8080)
export class EventGateway {
@WebSocketServer()
server: Server
@SubscribeMessage('connect')
onConnect(client: any, dat: any, mets: any) {
console.log(this.server.clients);
this.server.clients.forEach(client => {
client.send(JSON.stringify({
type: 'notification',
msg: `새로운 유저가 접속하였습니다. ${this.server.clients.size} 명`
}))
})
return 'websocket connection made';
}
@SubscribeMessage('event')
onEvent(client: any, data: any) {
console.log(data);
this.server.clients.forEach(client => {
client.send(JSON.stringify({
type: 'chat',
msg: data
}))
})
return 'hello world';
}
}
@WebSocketGateway
@SubscribeMessage('event')
import { NestFactory } from '@nestjs/core';
import { WsAdapter } from '@nestjs/platform-ws';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useWebSocketAdapter(new WsAdapter(app));
await app.listen(3000);
console.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();
[nestjs socket] https://docs.nestjs.com/websockets/gateways#lifecycle-hooks
[nestjs websocket] https://blog.ewq.kr/m/37