NestJS 中的 @nestjs/websockets 和 @nestjs/platform-socket.io 包有什么区别

Ruk*_*nJS 0 websocket socket.io nestjs

我在网上研究了这个主题,并发现了与此几乎相似的问题 - 但是,我需要知道为什么在 NestJS 中我们必须使用两个包来实现 WebSocket 通信。

这两个包是,

  • @nestjs/websockets
  • @nestjs/platform-socket.io

我知道 WebSocket 是一种协议,而 Socket.IO 是一个库,它有服务器版本和客户端版本。

在NestJS的网关文件中实现WebSocket连接时,必须编写类似以下的代码。

import {
  ConnectedSocket,
  MessageBody,
  OnGatewayConnection,
  OnGatewayDisconnect,
  SubscribeMessage,
  WebSocketGateway,
  WebSocketServer,
} from '@nestjs/websockets';

import { Server } from 'socket.io';
Run Code Online (Sandbox Code Playgroud)

我的问题,

  1. WebSocketServer和这里有什么区别Server

  2. 为什么我们从 导入而不是Server从导入?socket.io@nestjs/platform-socket.io

  3. 您如何用一句话描述使用每个包的目的?

Jay*_*iel 7

@nestjs/websockets是使 NestJS 中的 websocket 集成成为可能的基础包。@nestjs/platform-socket.io是用于集成的特定包socket.io,而不是类似@nestjs/platform-ws用于ws包的东西。

WebsocketServer是告诉 Nest 注入 websocket 服务器的装饰器,是服务器的Serversocket.io类型。

我们导入Socketfromsocket.io因为@nestjs/platform-socket.io实际上只是用于插入 Nest 平台的 websocket 适配器。

单句:

  • @nestjs/websockets:允许通过 websocket 适配器进行 websocket 通信
  • @nestjs/platform-socket.io:socket.io websocket适配器允许socket.io websocket与服务器通信
  • socket.io:一个 websocket 实现和引擎,无论有没有 NestJS 都可以使用