gpt4 book ai didi

node.js - 我应该如何处理 CONNECT 事件?

转载 作者:行者123 更新时间:2023-12-03 11:49:53 24 4
gpt4 key购买 nike

如果我在 Node.JS 中创建一个简单的服务器

var httpServer = http.createServer(callback);

httpServer.on('connect', function(req, socket, head){
console.log('connect');
});

httpServer.listen(3128, '192.168.0.2');

收到connect事件应该怎么办?

背景

  • 这将是一个代理服务器,服务于 HTTP 和 HTTPS
  • 客户端连接到端口 3128
  • 当客户端发出 HTTPS 请求时,connect 事件被触发

理想情况下,我想做的是将请求代理到终端服务器,然后给客户端响应。

但我在这里看不到任何用于执行此操作的 API。 connect 回调没有通常的 (request, response) 参数,而是接受 (request, socket, head)

我如何完成请求并发出响应?

最佳答案

从头开始重写的答案

这是一个简单的例子。
connect 事件处理程序传递了 socket 对象,我们必须将其绑定(bind)到远程连接的套接字。

httpServer.on('connect', function(req, socket, head) {
var addr = req.url.split(':');
//creating TCP connection to remote server
var conn = net.connect(addr[1] || 443, addr[0], function() {
// tell the client that the connection is established
socket.write('HTTP/' + req.httpVersion + ' 200 OK\r\n\r\n', 'UTF-8', function() {
// creating pipes in both ends
conn.pipe(socket);
socket.pipe(conn);
});
});

conn.on('error', function(e) {
console.log("Server connection error: " + e);
socket.end();
});
});

关于node.js - 我应该如何处理 CONNECT 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340414/

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