@@ -76,6 +76,35 @@ describe('ParseWebSocketServer', function () {
7676 expect ( wssError ) . toBe ( 'Invalid Packet' ) ;
7777 } ) ;
7878
79+ it ( 'can handle ping/pong' , async ( ) => {
80+ const onConnectCallback = jasmine . createSpy ( 'onConnectCallback' ) ;
81+ const http = require ( 'http' ) ;
82+ const server = http . createServer ( ) ;
83+ const parseWebSocketServer = new ParseWebSocketServer ( server , onConnectCallback , {
84+ websocketTimeout : 10 ,
85+ } ) . server ;
86+
87+ const ws = new EventEmitter ( ) ;
88+ ws . readyState = 0 ;
89+ ws . OPEN = 0 ;
90+ ws . ping = jasmine . createSpy ( 'ping' ) ;
91+ ws . terminate = jasmine . createSpy ( 'terminate' ) ;
92+
93+ parseWebSocketServer . onConnection ( ws ) ;
94+
95+ expect ( onConnectCallback ) . toHaveBeenCalled ( ) ;
96+ expect ( ws . waitingForPong ) . toBe ( false ) ;
97+ await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
98+ expect ( ws . ping ) . toHaveBeenCalled ( ) ;
99+ expect ( ws . waitingForPong ) . toBe ( true ) ;
100+ ws . emit ( 'pong' ) ;
101+ expect ( ws . waitingForPong ) . toBe ( false ) ;
102+ await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
103+ expect ( ws . waitingForPong ) . toBe ( true ) ;
104+ expect ( ws . terminate ) . not . toHaveBeenCalled ( ) ;
105+ server . close ( ) ;
106+ } ) ;
107+
79108 it ( 'closes interrupted connection' , async ( ) => {
80109 const onConnectCallback = jasmine . createSpy ( 'onConnectCallback' ) ;
81110 const http = require ( 'http' ) ;
@@ -93,8 +122,10 @@ describe('ParseWebSocketServer', function () {
93122
94123 // Make sure callback is called
95124 expect ( onConnectCallback ) . toHaveBeenCalled ( ) ;
125+ expect ( ws . waitingForPong ) . toBe ( false ) ;
96126 await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
97127 expect ( ws . ping ) . toHaveBeenCalled ( ) ;
128+ expect ( ws . waitingForPong ) . toBe ( true ) ;
98129 await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
99130 expect ( ws . terminate ) . toHaveBeenCalled ( ) ;
100131 server . close ( ) ;
0 commit comments