nestjs websocket 使用方法
时间: 2024-09-12 07:14:05 浏览: 117
NestJS是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用TypeScript(但也兼容纯JavaScript)构建,遵循模块化的架构。
在NestJS中,WebSocket是一种支持持久连接的网络通信协议。在WebSocket的实现中,服务器和客户端可以相互推送信息,而不需要客户端先发起请求。这使得WebSocket非常适合需要实时双向通信的应用程序。
以下是使用NestJS中WebSocket的基本步骤:
1. 安装依赖:首先,你需要安装`@nestjs/websockets`和`socket.io`这两个包来使用WebSocket功能。
```bash
npm install @nestjs/websockets socket.io
```
2. 创建WebSocket模块:你可以使用NestJS CLI命令来快速创建一个WebSocket模块。
```bash
nest g module websockets
nest g service websockets
```
3. 定义消息代理:在WebSocket模块中,你可以定义消息代理(message handler),这与HTTP请求处理的控制器类似。消息代理处理来自客户端的特定事件,并可将消息发送回客户端。
```typescript
// websockets.service.ts
import { Injectable } from '@nestjs/common';
import { Server, WsResponse } from '@nestjs/websockets';
@Injectable()
export class WebsocketsService {
@WsResponse()
public readonly response = {};
@Server('ws')
onModuleInit(server: Server) {
server.on('connection', (client: any) => {
console.log('Client connected', client.id);
});
}
@EventPattern('message')
async handleTextMessage(client: any, data: string): Promise<void> {
client.emit('message', 'Server received message: ' + data);
}
@EventPattern('disconnect')
onDisconnect(client: any): void {
console.log('Client disconnected', client.id);
}
}
```
4. 使用WebSocket模块:最后,你需要在你的应用模块中导入并使用这个WebSocket模块。
```typescript
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { WebsocketsModule } from './websockets/websockets.module';
@Module({
imports: [WebsocketsModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
```
现在,你的NestJS应用已经能够处理WebSocket连接和消息了。
阅读全文