@nohost/router
Advanced tools
Comparing version 0.6.4 to 0.7.0
@@ -1,2 +0,2 @@ | ||
const { request, tunnel, upgrade, getRawHeaders, onClose } = require('@nohost/connect'); | ||
const { request, tunnel, upgrade, getRawHeaders } = require('@nohost/connect'); | ||
@@ -6,25 +6,21 @@ const ERROR_HEADERS = { 'x-server': 'nohost/connect' }; | ||
module.exports = async (options, req, res) => { | ||
if (!res) { | ||
return request(req, options); | ||
} | ||
exports.writeError = (res, err) => { | ||
res.writeHead(500, ERROR_HEADERS); | ||
res.end(err.stack); | ||
}; | ||
if (!res.writeHead) { | ||
if (isUpgrade(req)) { | ||
upgrade(req, options); | ||
} else { | ||
tunnel(req, options); | ||
} | ||
return; | ||
} | ||
exports.writeHead = (res, svrRes) => { | ||
res.writeHead(svrRes.statusCode, getRawHeaders(svrRes)); | ||
}; | ||
onClose(res, (err) => req.emit('close', err)); | ||
try { | ||
const svrRes = await request(req, options); | ||
res.writeHead(svrRes.statusCode, getRawHeaders(svrRes)); | ||
svrRes.pipe(res); | ||
} catch (err) { | ||
res.writeHead(500, ERROR_HEADERS); | ||
res.end(err.stack); | ||
exports.writeBody = (res, svrRes) => svrRes.pipe(res); | ||
exports.connect = async (options, req, res) => { | ||
if (res.writeHead) { | ||
return request(req, res, options); | ||
} | ||
if (isUpgrade(req)) { | ||
return upgrade(req, options); | ||
} | ||
return tunnel(req, options); | ||
}; |
const url = require('url'); | ||
const { parse: parseUrl } = require('url'); | ||
const { onClose, getRawHeaders } = require('@nohost/connect'); | ||
const { getServers, isFinished, getJSON } = require('./util'); | ||
const connect = require('./connect'); | ||
const { connect, writeError, writeHead, writeBody } = require('./connect'); | ||
@@ -96,6 +97,3 @@ const INTERVAL = 10000; | ||
async proxy(req, res, callback) { | ||
if (typeof res === 'function') { | ||
callback = res; | ||
res = null; | ||
} | ||
onClose(res); | ||
if (this._nohostAddress) { | ||
@@ -170,2 +168,6 @@ if (req.isUIRequest) { | ||
Router.CLIENT_ID_FILTER = 'x-whistle-filter-client-id'; | ||
Router.writeError = writeError; | ||
Router.writeHead = writeHead; | ||
Router.writeBody = writeBody; | ||
Router.getRawHeaders = getRawHeaders; | ||
module.exports = Router; |
{ | ||
"name": "@nohost/router", | ||
"version": "0.6.4", | ||
"version": "0.7.0", | ||
"description": "Nohost cluster router", | ||
@@ -35,5 +35,5 @@ "main": "lib/", | ||
"dependencies": { | ||
"@nohost/connect": "1.2.2", | ||
"@nohost/connect": "^1.3.4", | ||
"hparser": "^0.3.0" | ||
} | ||
} |
@@ -24,2 +24,4 @@ # router | ||
CLIENT_ID_FILTER, | ||
writeHead, | ||
writeError, | ||
} = Router; | ||
@@ -39,3 +41,9 @@ // 初始化传人部署的 nohost 服务器列表 | ||
// 支持http、websocket、tunnel | ||
router.proxy(req, res); | ||
try { | ||
const svrRes = await router.proxy(req, res); | ||
writeHead(res, svrRes); | ||
svrRes.pipe(res); | ||
} catch (err) { | ||
writeError(res, err); | ||
} | ||
@@ -42,0 +50,0 @@ // 查看抓包请求 |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
13759
117
318
+ Added@nohost/connect@1.4.0(transitive)
- Removed@nohost/connect@1.2.2(transitive)
Updated@nohost/connect@^1.3.4