Chuyển đến nội dung
Tất cả bài viết
Blog & hướng dẫn/Xử lý lỗi & Bảo mật
Xử lý lỗi & Bảo mật

WebSocket mất kết nối khi dùng Proxy: Checklist cho chat và realtime

Kiểm tra riêng handshake, thời gian duy trì, close code và reconnect để tránh kết luận từ một lần tải trang thành công.

WebSocket mất kết nối khi dùng Proxy: Checklist cho chat và realtime
NỘI DUNG BÀI VIẾTHướng dẫn chi tiết từ ProxySmart

Tải được HTML không chứng minh đường truyền realtime hoạt động ổn định. Chat, bảng điều khiển và thông báo có thể dùng một kết nối WebSocket riêng với yêu cầu duy trì lâu hơn các request tải trang.

Tách mở kết nối và duy trì kết nối

WebSocket cho phép trao đổi hai chiều giữa client và server; xem MDN WebSockets API. Khi điều tra, ghi rõ lỗi ở lúc mở kết nối hay sau khi đã trao đổi dữ liệu. Một kết nối mở được rồi đóng khác với handshake chưa thành công.

Ghi đúng dấu vết

  1. Ghi URL ws hoặc wss đã bỏ token, thời điểm và phiên bản client.
  2. Kiểm tra request mở kết nối trong Network và lỗi TLS nếu có.
  3. Lưu close code, lý do đóng nếu có, thời gian kết nối tồn tại và sự kiện cuối cùng.
  4. Ghi xem client đang hoạt động hay để idle lúc rớt.
  5. Đối chiếu cùng request hoặc connection ID trong nhật ký backend.

Không suy ra nguyên nhân duy nhất từ close code. Một ngắt kết nối không có khung đóng đầy đủ chỉ cho biết client không nhận được quá trình kết thúc bình thường; cần thêm dấu vết từ các chặng.

Kiểm tra lớp trung gian

Với hệ thống mình quản lý, đối chiếu khả năng hỗ trợ WebSocket và timeout ở gateway, reverse proxy, ứng dụng và tuyến outbound. Đặc biệt xem lỗi có lặp sau một khoảng idle cố định không. Kiểm tra cơ chế heartbeat theo thiết kế của ứng dụng, không tự gửi gói hoặc thông điệp ngoài hợp đồng giao thức.

Ví dụ minh họa

Giả sử chat hoạt động khi có tin nhắn, nhưng mất kết nối sau một khoảng không tương tác. Hãy thử một phiên nhỏ có ghi thời gian, sau đó so với cấu hình idle timeout của lớp do bạn quản lý. Đây là kịch bản chẩn đoán, không phải cam kết hiệu suất hay kết quả đo trên gói ProxySmart.

Reconnect có kiểm soát

Không reconnect trong vòng lặp không giới hạn. Giới hạn lần thử, thêm khoảng chờ và tránh để toàn bộ client kết nối lại cùng lúc. Khi kết nối phục hồi, xác minh cơ chế đồng bộ tin bị thiếu hoặc trùng theo thiết kế ứng dụng; kết nối mới không tự bảo đảm tính liên tục của dữ liệu.

Tiêu chí hoàn thành

Thử đủ một tác vụ chat hợp lệ, giai đoạn idle, đóng kết nối và reconnect với dữ liệu thử. Lưu kết quả đã che thông tin tài khoản. Bài giám sát proxy hỗ trợ theo dõi tuyến mạng, nhưng ứng dụng realtime cần tiêu chí kiểm thử riêng.