feat/1034: sending socket close code when there is no response from the websocket app (#1035)

This commit is contained in:
rammohan-y
2025-01-16 20:43:00 +05:30
committed by GitHub
parent 4dbc7df93d
commit 77f3d9d7ec
3 changed files with 11 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
const uuidv4 = require('uuid-random'); const uuidv4 = require('uuid-random');
const {CallDirection, AllowedSipRecVerbs} = require('./utils/constants'); const {CallDirection, AllowedSipRecVerbs, WS_CLOSE_CODES} = require('./utils/constants');
const {parseSiprecPayload} = require('./utils/siprec-utils'); const {parseSiprecPayload} = require('./utils/siprec-utils');
const CallInfo = require('./session/call-info'); const CallInfo = require('./session/call-info');
const HttpRequestor = require('./utils/http-requestor'); const HttpRequestor = require('./utils/http-requestor');
@@ -460,7 +460,7 @@ module.exports = function(srf, logger) {
}).catch((err) => this.logger.info({err}, 'Error generating alert for parsing application')); }).catch((err) => this.logger.info({err}, 'Error generating alert for parsing application'));
logger.info({err}, `Error retrieving or parsing application: ${err?.message}`); logger.info({err}, `Error retrieving or parsing application: ${err?.message}`);
res.send(480, {headers: {'X-Reason': err?.message || 'unknown'}}); res.send(480, {headers: {'X-Reason': err?.message || 'unknown'}});
app.requestor.close(); app.requestor.close(WS_CLOSE_CODES.GoingAway);
} }
} }

View File

@@ -283,5 +283,9 @@
"Offline": "OFFLINE", "Offline": "OFFLINE",
"GracefulShutdownInProgress":"SHUTDOWN_IN_PROGRESS" "GracefulShutdownInProgress":"SHUTDOWN_IN_PROGRESS"
}, },
"FEATURE_SERVER" : "feature-server" "FEATURE_SERVER" : "feature-server",
"WS_CLOSE_CODES": {
"NormalClosure": 1000,
"GoingAway": 1001
}
} }

View File

@@ -1,7 +1,7 @@
const assert = require('assert'); const assert = require('assert');
const BaseRequestor = require('./base-requestor'); const BaseRequestor = require('./base-requestor');
const short = require('short-uuid'); const short = require('short-uuid');
const {HookMsgTypes} = require('./constants.json'); const {HookMsgTypes, WS_CLOSE_CODES} = require('./constants.json');
const Websocket = require('ws'); const Websocket = require('ws');
const snakeCaseKeys = require('./snakecase-keys'); const snakeCaseKeys = require('./snakecase-keys');
const { const {
@@ -261,13 +261,13 @@ class WsRequestor extends BaseRequestor {
} }
} }
close() { close(code = WS_CLOSE_CODES.NormalClosure) {
this.closedGracefully = true; this.closedGracefully = true;
this.logger.debug('WsRequestor:close closing socket'); this.logger.debug(`WsRequestor:close closing socket with code ${code}`);
this._stopPingTimer(); this._stopPingTimer();
try { try {
if (this.ws) { if (this.ws) {
this.ws.close(1000); this.ws.close(code);
this.ws.removeAllListeners(); this.ws.removeAllListeners();
this.ws = null; this.ws = null;
} }