【问题标题】:Nestjs how to use http request and Websocket at the same timeNestjs如何同时使用http请求和Websocket
【发布时间】:2021-06-12 16:51:23
【问题描述】:
我在 Nestjs 中有一个控制器来处理 HTTP 请求。有一个物联网设备与服务器通信,并通过发布请求将最新更改发送到服务器。同时,有一个移动应用程序应该使用 Websockets 实时接收更新。
我知道在 Nestjs 中 HTTP 请求和 Websockets 是不同的概念,但是有什么方法可以在我收到 HTTP 请求时发出事件?
任何想法都将受到高度赞赏。
【问题讨论】:
标签:
node.js
socket.io
nestjs
nestjs-gateways
nestjs-socket.io
【解决方案1】:
确实有一个适当的解决方案。你需要一个包含 RxJS Subject 的 Injectable。每当您的 Controller 通过 POST 请求接收到一个值时,它就会将该值委托给注入的服务。然后服务“指示”Subject 发出该值。
在链的另一端,在您的 WebSocket Gateway @SubscribeMessage 中,您返回一个 RxJS Observable - 它派生自 Subject - 给连接的客户端。
更多关于Subject和Asynchronous responses
这里是implementation。