Reputation: 5243
I have a controller in Nestjs that handles an HTTP request. There is an IoT device that communicates with the server and sends the latest changes to the server with a post request. At the same time, there is a mobile application that should receive the update in realtime with Websockets.
I know that the HTTP request and Websockets are different concepts in Nestjs, but is there any way to emit an event whenever I receive the HTTP request?
Any idea would be highly appreciated.
Upvotes: 2
Views: 4309
Reputation: 76
There is indeed a proper solution for this. You need an Injectable
that contains an RxJS Subject
. Whenever your Controller
receives a value via the POST request, it delegates the value to the injected service. The service then "instructs" the Subject
to emit the value.
On the other side of the chain, inside your WebSocket Gateway
@SubscribeMessage
, you return an RxJS Observable
- which is derived from the Subject
- to the connected clients.
More on Subject and Asynchronous responses
Here is the implementation.
Upvotes: 6