File tree Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ const {
1313
1414const kUpstreamClosed = Symbol ( 'kUpstreamClosed' ) ;
1515const kMessageReceived = Symbol ( 'kMessageReceived' ) ;
16+ const kPingReceived = Symbol ( 'kPingReceived' ) ;
17+ const kSendPing = Symbol ( 'kSendPing' ) ;
1618const kError = Symbol ( 'kError' ) ;
1719const kSendMessage = Symbol ( 'kSendMessage' ) ;
1820const kQueueMessage = Symbol ( 'kQueueMessage' ) ;
Original file line number Diff line number Diff line change @@ -8,6 +8,8 @@ const { createTarget } = require('../util/util');
88const {
99 kUpstreamClosed,
1010 kMessageReceived,
11+ kPingReceived,
12+ kSendPing,
1113 kEnableIncomingQueue,
1214 kEnableOutgoingQueue,
1315 kError,
@@ -107,6 +109,10 @@ class Context extends EventEmitter {
107109 logger . debug ( `${ INCOMING } [${ this . connectionId } ] [MESSAGE] - ${ msg } ` ) ;
108110 } ) ;
109111
112+ this . incomingSocket . on ( kSendPing , ( ) => {
113+ this . incomingSocket . ping ( ) ;
114+ } ) ;
115+
110116 this . incomingSocket . on ( kDrainMessage , ( msg ) => {
111117 this . outgoingSocket . emit ( kSendMessage , msg ) ;
112118 } ) ;
@@ -165,6 +171,10 @@ class Context extends EventEmitter {
165171 this . emit ( kAddNewContext , connectionId ) ;
166172 } ) ;
167173
174+ this . outgoingSocket . on ( kPingReceived , ( ) => {
175+ this . incomingSocket . emit ( kSendPing ) ;
176+ } ) ;
177+
168178 this . outgoingSocket . on ( kMessageReceived , ( msg ) => {
169179 if ( this . outgoingLock ) {
170180 logger . debug ( `${ OUTGOING } [${ this . connectionId } ] [QUEUE] - ${ msg } ` ) ;
Original file line number Diff line number Diff line change @@ -128,6 +128,13 @@ class IncomingWebSocket extends EventEmitter {
128128 send ( msg ) {
129129 this . socket . send ( msg ) ;
130130 }
131+
132+ /**
133+ * Relays ping from upstream.
134+ */
135+ ping ( ) {
136+ this . socket . ping ( ) ;
137+ }
131138}
132139
133140module . exports = IncomingWebSocket ;
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ const {
1313 kAddNewContext,
1414 kReleaseTap,
1515 kMessageReceived,
16+ kPingReceived,
1617 kError,
1718 kUpstreamRestart,
1819 kUpstreamClosed,
@@ -71,6 +72,7 @@ class OutgoingWebSocket extends EventEmitter {
7172 this . socket . on ( 'message' , this . messageHandler . bind ( this ) ) ;
7273 this . socket . on ( 'close' , this . closeHandler . bind ( this ) ) ;
7374 this . socket . on ( 'error' , this . errorHandler . bind ( this ) ) ;
75+ this . socket . on ( 'ping' , this . pingHandler . bind ( this ) ) ;
7476 }
7577
7678 /**
@@ -108,6 +110,10 @@ class OutgoingWebSocket extends EventEmitter {
108110 this . emit ( kMessageReceived , msg ) ;
109111 }
110112
113+ pingHandler ( ) {
114+ this . emit ( kPingReceived ) ;
115+ }
116+
111117 /**
112118 * Triggers when socket connection is closed.
113119 *
You can’t perform that action at this time.
0 commit comments