gpt4 book ai didi

node.js - node-http-proxy websocket 代理和中间件

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:43 28 4
gpt4 key购买 nike

我想反向代理一个使用 websockets 的现有应用程序,但使用应用程序中间件在应用程序前面实现授权层。

node-http-proxy 宣传了这两个功能,但我似乎无法将它们结合起来。

反向代理 websockets 工作正常:

var httpProxy = require('http-proxy');

httpProxy.createProxyServer({
target: 'http://127.0.0.1:8888', // where do we want to proxy to?
ws : true // proxy websockets as well
}).listen(3000);

当我查看 middleware examples 时不过,他们似乎都使用 connect 作为服务器,而此时对 websocket 的支持似乎消失了。例如。

var httpProxy = require('http-proxy'),
connect = require('connect');

var proxy = httpProxy.createProxyServer({
target: 'http://localhost:8888',
ws: true
});

connect.createServer(
connect.compress({
// Pass to connect.compress() the options
// that you need, just for show the example
// we use threshold to 1
threshold: 1
}),
function (req, res) {
proxy.web(req, res);
}
).listen(3000);

这是一个已知的限制,还是有其他方法可以结合 websocket 反向代理和中间件?

最佳答案

你可以使用 http-proxy-middleware作为中间件。它将代理 http 请求和 websockets:

var http            = require('http');
var connect = require('connect');
var proxyMiddleware = require('http-proxy-middleware');

var proxy = proxyMiddleware('http://localhost:8888', {
changeOrigin: true, // for vhosted sites
ws: true
});

var app = connect();
app.use(proxy); // <- add the proxy to connect

var server = http.createServer(app).listen(3000);

查看文档以获取更多配置选项:

https://www.npmjs.com/package/http-proxy-middleware

关于node.js - node-http-proxy websocket 代理和中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397126/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com