1+ import { Logger , WebSocketAdapter } from '@nestjs/common' ;
2+ import { loadPackage } from '@nestjs/common/utils/load-package.util' ;
3+ import { isFunction } from '@nestjs/common/utils/shared.utils' ;
14import { Server } from 'http' ;
5+ import { EMPTY as empty , Observable , fromEvent } from 'rxjs' ;
6+ import { filter , mergeMap } from 'rxjs/operators' ;
7+ import { CLOSE_EVENT , CONNECTION_EVENT , ERROR_EVENT } from '../constants' ;
28import { MessageMappingProperties } from '../gateway-metadata-explorer' ;
3- import {
4- CONNECTION_EVENT ,
5- DISCONNECT_EVENT ,
6- CLOSE_EVENT ,
7- ERROR_EVENT ,
8- } from '../constants' ;
9- import { WebSocketAdapter , Logger } from '@nestjs/common' ;
10- import { Observable , fromEvent , EMPTY as empty } from 'rxjs' ;
11- import { mergeMap , filter , tap } from 'rxjs/operators' ;
12- import { isFunction } from '@nestjs/common/utils/shared.utils' ;
13- import { loadPackage } from '@nestjs/common/utils/load-package.util' ;
149
1510let wsPackage : any = { } ;
1611
@@ -54,11 +49,11 @@ export class WsAdapter implements WebSocketAdapter {
5449 public bindMessageHandlers (
5550 client : WebSocket ,
5651 handlers : MessageMappingProperties [ ] ,
57- process : ( data : any ) => Observable < any > ,
52+ transform : ( data : any ) => Observable < any > ,
5853 ) {
5954 fromEvent ( client , 'message' )
6055 . pipe (
61- mergeMap ( data => this . bindMessageHandler ( data , handlers , process ) ) ,
56+ mergeMap ( data => this . bindMessageHandler ( data , handlers , transform ) ) ,
6257 filter ( result => ! ! result ) ,
6358 )
6459 . subscribe ( response => client . send ( JSON . stringify ( response ) ) ) ;
@@ -67,17 +62,19 @@ export class WsAdapter implements WebSocketAdapter {
6762 public bindMessageHandler (
6863 buffer ,
6964 handlers : MessageMappingProperties [ ] ,
70- process : ( data : any ) => Observable < any > ,
65+ transform : ( data : any ) => Observable < any > ,
7166 ) : Observable < any > {
72- const message = JSON . parse ( buffer . data ) ;
73- const messageHandler = handlers . find (
74- handler => handler . message === message . event ,
75- ) ;
76- if ( ! messageHandler ) {
67+ try {
68+ const message = JSON . parse ( buffer . data ) ;
69+ const messageHandler = handlers . find (
70+ handler => handler . message === message . event ,
71+ ) ;
72+ const { callback } = messageHandler ;
73+ return transform ( callback ( message . data ) ) ;
74+ }
75+ catch {
7776 return empty ;
7877 }
79- const { callback } = messageHandler ;
80- return process ( callback ( message . data ) ) ;
8178 }
8279
8380 public close ( server ) {
0 commit comments