nestjs websocket
时间: 2023-06-20 13:09:59 浏览: 80
NestJS 提供了内置的 WebSocket 模块,可以帮助开发者轻松地实现 WebSocket 功能。下面是使用 NestJS WebSocket 模块的步骤:
1. 安装 WebSocket 模块:
```
npm install --save @nestjs/websockets
```
2. 在模块中导入 WebSocket 模块并配置:
```typescript
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'socket.io';
@WebSocketGateway()
export class AppGateway {
@WebSocketServer() server: Server;
}
@Module({
imports: [],
controllers: [AppController],
providers: [AppService, AppGateway],
})
export class AppModule {}
```
在上面的代码中,我们定义了一个 WebSocket 网关,它使用了 `@WebSocketGateway()` 装饰器,同时使用了 `@WebSocketServer()` 装饰器来注入 `socket.io` 服务器实例。
3. 在控制器中使用 WebSocket:
```typescript
import { Controller, Get } from '@nestjs/common';
import { MessagePattern, Payload, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'socket.io';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
@WebSocketServer() server: Server;
@MessagePattern('message')
handleMessage(@Payload() message: string): void {
this.server.emit('message', message);
}
}
```
在上面的代码中,我们使用 `@MessagePattern()` 装饰器来定义一个消息处理程序,它可以监听名为 `message` 的消息,并将其发送到所有连接的客户端。
4. 在客户端中使用 WebSocket:
```javascript
const socket = io('http://localhost:3000');
socket.on('connect', () => {
console.log('Connected to server!');
});
socket.on('message', (message) => {
console.log(`Received message: ${message}`);
});
socket.emit('message', 'Hello, world!');
```
在上面的代码中,我们使用 `socket.io` 客户端连接到服务器,并监听 `message` 事件。当服务器发送消息时,我们会收到它并将其输出到控制台。同时,我们还向服务器发送了一条消息。
以上就是使用 NestJS WebSocket 模块实现 WebSocket 的基本步骤。