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

Posted

技术标签:

【中文标题】Nestjs如何同时使用http请求和Websocket【英文标题】:Nestjs how to use http request and Websocket at the same time 【发布时间】:2021-06-12 16:51:23 【问题描述】:

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

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

任何想法都将受到高度赞赏。

【问题讨论】:

【参考方案1】:

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

更多关于Subject和Asynchronous responses

这里是implementation。

【讨论】:

以上是关于Nestjs如何同时使用http请求和Websocket的主要内容,如果未能解决你的问题,请参考以下文章

NestJS 返回 HTTP 请求的结果

nestjs 中间件获取请求/响应体

如何在 NestJS 控制器处理程序的请求中获取“已验证的正文”和“已验证的用户”?

如何使用@nestjs/axios 发出 api Get 请求

如何使用 NestJS 将纯文本作为我的请求正文传递?

如何使用 Nestjs 中的请求范围提供程序动态更改数据库连接?