@@ -2,8 +2,12 @@ import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
22import {
33 Client ,
44 ClientProxy ,
5+ Ctx ,
56 EventPattern ,
67 MessagePattern ,
8+ MqttContext ,
9+ MqttRecordBuilder ,
10+ Payload ,
711 Transport ,
812} from '@nestjs/microservices' ;
913import { from , lastValueFrom , Observable , of } from 'rxjs' ;
@@ -32,7 +36,7 @@ export class MqttController {
3236 @HttpCode ( 200 )
3337 async stream ( @Body ( ) data : number [ ] ) {
3438 const result = lastValueFrom (
35- await this . client
39+ this . client
3640 . send < number > ( { cmd : 'streaming' } , data )
3741 . pipe ( scan ( ( a , b ) => a + b , 0 ) ) ,
3842 ) ;
@@ -86,6 +90,25 @@ export class MqttController {
8690 return this . client . send < number > ( 'wildcard-message2/test/test' , data ) ;
8791 }
8892
93+ @Post ( 'record-builder-duplex' )
94+ @HttpCode ( 200 )
95+ useRecordBuilderDuplex ( @Body ( ) data : Record < string , any > ) {
96+ const record = new MqttRecordBuilder ( data ) . setQoS ( 2 ) . build ( ) ;
97+ return this . client . send ( 'record-builder-duplex' , record ) ;
98+ }
99+
100+ @MessagePattern ( 'record-builder-duplex' )
101+ handleRecordBuilderDuplex (
102+ @Payload ( ) data : Record < string , any > ,
103+ @Ctx ( ) context : MqttContext ,
104+ ) {
105+ const { qos } = context . getPacket ( ) ;
106+ return {
107+ data,
108+ qos,
109+ } ;
110+ }
111+
89112 @MessagePattern ( 'wildcard-message/#' )
90113 wildcardMessageHandler ( data : number [ ] ) : number {
91114 if ( ( data as any ) . response ) {
0 commit comments