refactor: refine resDelay

This commit is contained in:
avwo
2021-08-27 15:59:39 +08:00
parent fd890fbe38
commit fbfe50cd73
+24 -27
View File
@@ -133,8 +133,8 @@ function resolveWebsocket(socket, wss) {
socket.write(rawData);
execCallback(null, socket);
};
var reqDelay = util.getMatcherValue(_rules.reqDelay) | 0;
var resDelay = util.getMatcherValue(_rules.resDelay) | 0;
var reqDelay = util.getMatcherValue(_rules.reqDelay) || 0;
var resDelay = util.getMatcherValue(_rules.resDelay) || 0;
var delay = reqDelay + resDelay;
if (delay > 0) {
clearTimeout(timeout);
@@ -516,12 +516,7 @@ function resolveWebsocket(socket, wss) {
reqSocket.write(socket.getBuffer(headers, options.path));
reqSocket.resume();
delete headers[config.HTTPS_FIELD];
var resDelay = util.getMatcherValue(_rules.resDelay);
if (resDelay > 0) {
setTimeout(_pipeData, resDelay);
} else {
_pipeData();
}
_pipeData();
}
function setupSocket(cb) {
@@ -608,26 +603,28 @@ function resolveWebsocket(socket, wss) {
socket.resHeaders = res.headers;
var curResHeaders = reqSocket.headers = res.headers;
getResRules(socket, res, function() {
reqSocket.reqId = data.id;
var code = curStatus || res.statusCode;
socket.statusCode = res.statusCode = code;
if (code == 101) {
socket.write(res.getHeaders(curResHeaders, curStatus));
if (res.bodyBuffer.length) {
reqSocket.unshift(res.bodyBuffer);
util.delay(util.getMatcherValue(_rules.resDelay), function() {
reqSocket.reqId = data.id;
var code = curStatus || res.statusCode;
socket.statusCode = res.statusCode = code;
if (code == 101) {
socket.write(res.getHeaders(curResHeaders, curStatus));
if (res.bodyBuffer.length) {
reqSocket.unshift(res.bodyBuffer);
}
socketMgr.handleUpgrade(socket, reqSocket);
resData.body = '';
} else {
socket.write(res.getBuffer(curResHeaders, curStatus));
reqSocket.resume();
resData.body = res.body;
}
socketMgr.handleUpgrade(socket, reqSocket);
resData.body = '';
} else {
socket.write(res.getBuffer(curResHeaders, curStatus));
reqSocket.resume();
resData.body = res.body;
}
resData.headers = curResHeaders;
resData.rawHeaderNames = res.rawHeaderNames;
resData.statusCode = code;
reqEmitter.emit('response', data);
execCallback(null, reqSocket);
resData.headers = curResHeaders;
resData.rawHeaderNames = res.rawHeaderNames;
resData.statusCode = code;
reqEmitter.emit('response', data);
execCallback(null, reqSocket);
});
});
}, true);
}