mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-20 16:50:39 +00:00
feat/1034: sending socket close code when there is no response from the websocket app (#1035)
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user