Cấu hình các tùy chọn của ClientWebSocket trước khi gọi ConnectAsync. Bắt đầu kết nối trước rồi mới gán proxy sau là quá muộn cho lần bắt tay đó.

using var socket = new ClientWebSocket();
socket.Options.Proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential(proxyUser, proxyPassword)
};
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
await socket.ConnectAsync(new Uri("wss://example.com/socket"),
                          deadline.Token);

Địa chỉ và biến tài khoản chỉ là ví dụ. Các không gian tên cần thiết bao gồm System.Net, System.Net.WebSockets và System.Threading. Hãy dùng loại thông tin xác thực và cơ chế xác thực mà runtime, nền tảng và dịch vụ proxy trong triển khai của bạn hỗ trợ.

Thông tin xác thực của WebProxy thuộc về proxy. ClientWebSocketOptions cũng có thuộc tính Credentials riêng cho việc xác thực máy chủ WebSocket. Gán một bên không tự động thỏa mãn bên kia.

Với kết nối WebSocket bảo mật, một đường hầm proxy bị từ chối có thể khiến bắt tay WebSocket của đích không thể bắt đầu. Hãy tách bằng chứng về kết nối và xác thực proxy khỏi phản hồi HTTP upgrade của đích và lưu lượng WebSocket về sau.

Kết nối thành công chỉ là khởi đầu của phiên. Giữ việc hủy nhận/gửi và dọn dẹp tài nguyên rõ ràng trong suốt vòng đời ứng dụng; thời hạn thiết lập trong bản phác này không phải chính sách đầy đủ cho mọi thông điệp tiếp theo.

Bài viết liên quan