当前位置: 首页 > 知识库问答 >
问题:

节点-HTTP-Proxy Socket.io websocket连接

习洲
2023-03-14

我试图让node-http-proxy与socket.io一起工作,但它总是返回到xhr,websockets无法工作,尽管我正在连接到node-http-proxy文档中描述的升级事件。

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

var server = httpProxy.createServer (function (req, res, proxy) {
    var buffer = httpProxy.buffer (req);
    proxy.proxyRequest (req, res, {
        host : "localhost",
        port : 8001,
        buffer : buffer
    });
});
server.listen (80);

server.on('upgrade', function (req, socket, head) {
    server.proxy.proxyWebSocketRequest(req, socket, head, { host : "localhost", port : 8001 });
});

显然,这个应用程序在localhost:8001上运行,如果我允许所有的传输方法,它将工作得很好,因为它使用XHRS。如果我强迫它使用websockets,firefox会说

Firefox can't establish a connection to the server at ws://localhost/socket.io/1/websocket/cNp5J80KAWkXqjE6OZOt. @ http://localhost/socket.io/socket.io.js:2371

只使用默认方法

httpProxy.createServer (8001, "localhost").listen (80);

导致相同的错误。

共有2个答案

翟修明
2023-03-14

我目前使用的是(最新的1.0.1版)节点-HTTP-Proxy,我发现在节点0.10.20上进行了一次调整(见下文)之后,Websockets确实可以可靠地工作。默认情况下,node-http-proxy似乎支持xhr-polling,同时丢弃websocket连接。

在“examples”中,我添加了“ws”标志true

var http = require('http'),
    httpProxy = require('../../lib/http-proxy');

httpProxy.createServer({
  target:'http://somehost.tld:5000',
  ws : true //added Websockets Flag TRUE
}).listen(80);//arbitrary port
邵伟泽
2023-03-14

用node-http-proxy代理websockets似乎在节点0.10上被破坏了。这里有一个尝试修复它的pull请求,但是请看我的评论:修复也不完全有效。

https://github.com/nodejitsu/node-http-proxy/pull/402

 类似资料:
  • EasyReact 的重点就是让节点之间的数据流动起来,所以连接节点是很重要的。 如何连接两个节点 两个节点是通过变换来连接的,在源码目录 EasyReact/Classes/Core/NodeTransforms 中我们默认实现了了很多的变换,你也可以通过继承 EZRTransform 类来实现自己的变换,一旦我们创建好一个变换后,就可以通过如下方式进行连接了: EZRMutableNode<N

  • 我正在寻找一个算法来检查任何有效的连接(最短或最长)之间的两个任意节点在一个图上。 我的图被固定为一个具有逻辑(x,y)坐标的网格,具有北/南/东/西连接,但是节点可以随机移除,所以你不能假设取离目标最近的coords的边总是会让你到达那里。 代码是用Python编写的。数据结构是每个节点(对象)都有一个连接节点的列表。列表元素是对象引用,因此我们可以递归地搜索该节点的连接节点列表,如下所示: 尽

  • 问题内容: 如何使用与以下代码等效的node.js发出Http请求: 问题答案: 使用http客户端。 遵循以下原则:

  • 双向RPC调用会打开多个http2连接吗? 我正在编写一个GRPC客户端,它与我不拥有/控制的GRPC服务器对话。我正在使用@grpc/grpc-js包。有人问我这个库是否会打开到grpcendpoint的多个HTTP2连接,我对源代码不够熟悉,无法回答这个问题。我的调用和打开流的代码如下 我自己已经开始研究这个问题,我发现是对象启动了http 2连接,所以看起来每个子信道都有一个http 2连接

  • 问题内容: 嗨,我遇到以下错误,但我的节点已启动,并且在jenkins日志中一切正常,但是在正在节点上进行的一些工作中,我遇到了以下麻烦 问题答案: 我不知道原因,但是它会在从属计算机重新启动后或计算机失去连接(很长一段时间)后发生。 问题(在我的情况下)是进程java -jar slave.jar没有在slave中运行。要解决此问题,请尝试重新连接Jenkins菜单中的节点,因此请转到: 管理詹

  • 我想递归地连接一个节点的参数值和它的父节点的相同参数值。 例如,如下: 应该成为 我试过了 有什么问题吗?

  • 利用AntvG6,实现节点连线图: 1、后台动态下发数据,无节点位置信息。 2、渲染出来的图表不可编辑,不可拖拽。 3、鼠标移入节点显示节点信息,移入每个节点间连线,显示当前段落的线的值(存在2个值,分别在线的上下或者左右显示两个值)。 效果图如下: 目前我自己只做出了这样的效果(如下图),只实现了鼠标移入节点显示节点信息……移入线条时的提示信息、如何让水平方向主干道在一条直线暂未实现,请各位大神

  • 问题内容: 考虑以下简单的Node.js应用程序: 它向google.com发出2000个HTTP请求,一个接一个。问题在于它会请求5号并暂停大约3分钟,然后继续处理请求6-10,然后再暂停3分钟,然后再请求11-15,然后暂停,依此类推。 编辑: 我尝试将www.google.com更改为localhost,这是运行我的计算机的极其基本的Node.js应用程序,返回“ Hello world”,