nestjs Socket.IO 使用
时间: 2024-09-12 22:13:56 浏览: 72
Node.JS - socket.io教程
NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用 TypeScript 编写,但也兼容纯 JavaScript。NestJS 框架支持多种通信方式,其中包括使用 Socket.IO 实现实时、双向和基于事件的通信。
Socket.IO 是一个库,可以非常轻松地实现实时、双向和基于事件的通信。它包含了客户端和服务器端的库,可以用来在浏览器和服务器之间建立连接,并且支持自动重连、二进制数据等特性。
在 NestJS 中使用 Socket.IO 主要有以下几个步骤:
1. 安装依赖:首先,你需要安装 NestJS 的 Socket.IO 模块,通常通过 npm 或 yarn 来安装。
```bash
npm install @nestjs/platform-socket.io
```
2. 配置 Socket.IO 模块:在你的 NestJS 应用中,你需要导入并配置 `IoModule`。你可以指定 Socket.IO 的选项,比如端口等。
```typescript
import { IoModule } from '@nestjs/platform-socket.io';
import { Module } from '@nestjs/common';
@Module({
imports: [
IoModule.forRoot({
host: 'localhost',
port: 3000,
}),
],
// ...
})
export class AppModule {}
```
3. 创建事件处理函数:你可以使用装饰器 `@EventPattern` 来创建一个事件处理函数,这样你就可以监听来自客户端的特定事件。
```typescript
import { EventPattern, Injectable, OnEvent } from '@nestjs/common';
import { Server } from 'socket.io';
@Injectable()
export class MySocketService {
constructor(private server: Server) {}
@OnEvent('myEvent')
handleMyEvent(data: any) {
console.log('Got myEvent', data);
// 处理事件并发送响应
this.server.to(data.room).emit('myResponse', { message: 'Response to myEvent' });
}
}
```
4. 运行应用:确保 Socket.IO 模块正确配置后,启动你的 NestJS 应用程序,客户端就可以连接到你的服务器并开始通信了。
```typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
```
5. 客户端连接:在客户端(如浏览器),你可以使用 Socket.IO 的客户端库来连接服务器。
```javascript
const socket = io('http://localhost:3000');
socket.on('connect', () => {
console.log('Connected to server');
});
// 发送事件给服务器
socket.emit('myEvent', { room: 'someRoom' });
// 监听服务器响应的事件
socket.on('myResponse', (data) => {
console.log('Received myResponse', data);
});
```
阅读全文