Một yêu cầu OkHttp không có trường proxy có thể thay đổi chung. Hãy chọn máy khách có tuyến đường dự định trước khi tạo lời gọi của nó.

Khi phần cấu hình còn lại cần được chia sẻ, hãy dẫn xuất máy khách đã định tuyến từ một máy khách hiện có:

OkHttpClient routed = baseClient.newBuilder()
    .proxy(new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress("203.0.113.10", 8080)))
    .build();

Điểm cuối chỉ mang tính minh họa. Các điểm cuối HTTP công khai từ danh sách proxy HTTP có thể điền địa chỉ socket này cho một tuyến dịch vụ công cộng được phép, miễn là chính sách của máy khách cơ sở không cung cấp thông tin xác thực proxy nào cho điểm cuối mới. OkHttp ghi nhận rằng newBuilder chia sẻ tài nguyên nhóm kết nối và luồng với máy khách gốc. Điều đó không có nghĩa là một socket được thiết lập qua một proxy có thể được dán nhãn lại thành một tuyến khác. Tính phù hợp của kết nối vẫn phụ thuộc vào cấu hình tuyến và địa chỉ.

Đối với công việc lặp lại, hãy duy trì một tập hợp máy khách có giới hạn được khóa theo chính sách định tuyến mà bạn thực sự cần. Tránh một bản đồ không giới hạn có khóa chứa mọi tài khoản tạm thời hoặc biến thể proxy từng được quan sát.

Việc chia sẻ tài nguyên cũng ảnh hưởng đến việc tắt máy. Đóng một bộ nhớ đệm được chia sẻ hoặc tắt một bộ điều phối được chia sẻ có thể ảnh hưởng đến các máy khách dẫn xuất khác đang dùng những tài nguyên đó. Hãy cho quyền sở hữu tài nguyên một vòng đời rõ ràng ở cấp ứng dụng thay vì coi mỗi máy khách dẫn xuất là một ngăn xếp mạng riêng biệt.

Cuối cùng, hãy đưa danh tính của proxy đã chọn vào siêu dữ liệu của chính lời gọi. Một biến toàn cục “proxy được chọn lần cuối” không thể xác định tuyến của nhiều yêu cầu đồng thời.

Bài viết liên quan