const { pipeline } = require('node:stream');

pipeline(upstreamResponse, clientResponse, (error) => {
  if (error) console.error('Proxy response failed:', error);
});

Dùng đường dẫn thân này sau khi chọn mục tiêu, gửi yêu cầu tới nguồn và chuẩn bị trạng thái cùng tiêu đề về phía máy khách. Các luồng Node thường cung cấp Buffer; đừng gom chúng vào một chuỗi đối với hình ảnh hoặc nội dung nhị phân khác không thay đổi.

pipeline điều phối áp lực ngược và lan truyền lỗi. Khi có lỗi, nó có thể hủy đích, nên đừng cho rằng vẫn có thể gửi thêm một phản hồi lỗi HTTP sau đó. Đoạn này không phải máy chủ proxy đầy đủ.

Với các byte đi qua, hãy giữ siêu dữ liệu biểu diễn liên quan như loại phương tiện và mã hóa nội dung, đồng thời xử lý các trường riêng của từng chặng bằng quy tắc chuyển tiếp. Việc so sánh byte gzip và tiêu đề phản hồi tương ứng cho thấy lựa chọn giữa biểu diễn đã mã hóa và đã giải mã.

Việc viết lại HTML có chủ đích cần một đường khác: nhận diện loại phương tiện, xử lý nén và bộ ký tự, biến đổi văn bản và tạo siêu dữ liệu cho các byte mới. Content-Length cũ không thể mô tả thân đã thay đổi.

Buffer.concat có thể giữ nội dung nhị phân khi cần đệm toàn bộ, nhưng lưu toàn bộ thân trong bộ nhớ. Một luồng hình ảnh đi qua không cần chi phí đó.

Bài viết liên quan