Skip to content

Commit 7cea777

Browse files
SaranshBSfrancisf
authored andcommitted
handling pings from server
1 parent 89a05d4 commit 7cea777

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

lib/config/constants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ const {
1313

1414
const kUpstreamClosed = Symbol('kUpstreamClosed');
1515
const kMessageReceived = Symbol('kMessageReceived');
16+
const kPingReceived = Symbol('kPingReceived');
17+
const kSendPing = Symbol('kSendPing');
1618
const kError = Symbol('kError');
1719
const kSendMessage = Symbol('kSendMessage');
1820
const kQueueMessage = Symbol('kQueueMessage');

lib/core/Context.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ const { createTarget } = require('../util/util');
88
const {
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}`);

lib/core/IncomingWebSocket.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff 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

133140
module.exports = IncomingWebSocket;

lib/core/OutgoingWebSocket.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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
*

0 commit comments

Comments
 (0)