Nestjs如何同时使用http请求和Websocket

Vah*_*afi 2 node.js socket.io nestjs nestjs-gateways nestjs-socket.io

我在 Nestjs 中有一个控制器来处理 HTTP 请求。有一个 IoT 设备与服务器进行通信,并通过 post 请求将最新更改发送到服务器。同时,有一个移动应用程序应该使用 Websockets 实时接收更新。

我知道 HTTP 请求和 Websockets 在 Nestjs 中是不同的概念,但是有没有办法在我收到 HTTP 请求时发出事件?

任何想法将不胜感激。

小智 6

对此确实有一个适当的解决方案。您需要一个Injectable包含 RxJS 的Subject。每当您Controller通过 POST 请求接收到一个值时,它就会将该值委托给注入的服务。然后该服务“指示”Subject发出该值。在链的另一端,在 WebSocket 内部Gateway @SubscribeMessage,您将一个 RxJS Observable(派生自 )返回Subject到连接的客户端。

有关主题异步响应的更多信息

这是实现