Aks*_*hat 8 javascript websocket node.js node-http-proxy
我正在尝试使用websockets node-http-proxy
.区别在于我使用的是proxytable:
var options = {
router: {
'a.websterten.com': '127.0.0.1:150',
'b.websterten.com' : '127.0.0.1:151',
}
};
var server = httpProxy.createServer(options);
Run Code Online (Sandbox Code Playgroud)
我试过了:
server.on('upgrade', function (req, socket, head) {
server.proxy.proxyWebSocketRequest(req, socket, head);
});
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.快速检查一下websockets是否可以显示我Unexpected response code: 400
从Chrome 获取的信息(如果我直接使用,则可以正常工作)
做一些检查server.on('upgrade',..
也不会触发websocket请求
如何让我的代理服务器正确路由websockets?
我也在节点0.8.23以及节点0.10.x上尝试了这个(节点的更高版本有内存泄漏问题,但它也不能在0.8.23上工作)
当您使用 时httpProxy.createServer()
,不需要处理该upgrade
事件,因为 http-proxy 会自动处理它。因此,你server.on('upgrade', ...)
永远不会触发,因为 http-proxy 已经在内部处理它了。
您唯一需要做的server.on('upgrade')
就是当您将中间件函数传递给httpProxy.createServer
或如果您使用http.createServer()
.
换句话说,websockets 应该通过配置中的代理“正常工作”。
然而,由于 Streams2,http-proxy 中的 WebSocket 支持目前在节点 v0.10.x 上被破坏(节点核心中的流 API在 0.10 中被完全重写)。 此外,最新版本的 http-proxy (0.10.2) 在节点 v0.8 中被破坏,因为对streams2问题的修复不善。
所以你有两个选择:
(您可以通过运行安装旧版本的 npm 模块npm install http-proxy@0.10.1
。)
归档时间: |
|
查看次数: |
1531 次 |
最近记录: |