Mã đóng WebSocket và mã lỗi Pusher
Ý nghĩa của từng mã và cách xử lý: các mã đóng WebSocket tiêu chuẩn (1000–1015) và mã lỗi của giao thức Pusher (4000–4399), mà Hibira cùng các dịch vụ tương thích Pusher khác cũng gửi.
Mã của giao thức Pusher
Máy chủ Pusher gửi thông điệp pusher:error kèm mã và lý do, rồi đóng kết nối bằng chính mã đó. Khoảng mã cho máy khách biết bước tiếp theo.
4000 SSL only
Ứng dụng này chỉ nhận kết nối mã hóa.
Cách xử lý: Kết nối bằng wss:// (forceTLS: true trong pusher-js).
Không kết nối lại với cùng thiết lập4001 Application does not exist
Không có ứng dụng nào dùng khóa này trên máy chủ này.
Cách xử lý: Kiểm tra khóa ứng dụng và máy chủ (hoặc cluster): khóa của một dịch vụ hay khu vực không dùng được ở nơi khác.
Không kết nối lại với cùng thiết lập4003 Application disabled
Ứng dụng tồn tại nhưng đã bị tắt.
Cách xử lý: Bật lại ứng dụng trong bảng điều khiển, hoặc kiểm tra tình trạng thanh toán của tài khoản.
Không kết nối lại với cùng thiết lập4004 Over connection quota
Ứng dụng đã mở số kết nối tối đa mà gói cho phép.
Cách xử lý: Chờ các kết nối khác đóng, đóng các tab không cần, hoặc chuyển sang gói có nhiều kết nối hơn.
Không kết nối lại với cùng thiết lập4005 Path not found
Đường dẫn URL không phải /app/APP_KEY.
Cách xử lý: Kiểm tra đường dẫn WebSocket: proxy và thiết lập wsPath sai thường là nguyên nhân.
Không kết nối lại với cùng thiết lập4006 Invalid version string format
Máy khách gửi phiên bản mà máy chủ không đọc được.
Cách xử lý: Dùng thư viện máy khách chính thức, hoặc gửi protocol=7 trong URL.
Không kết nối lại với cùng thiết lập4007 Unsupported protocol version
Máy chủ không hỗ trợ phiên bản giao thức mà máy khách yêu cầu.
Cách xử lý: Cập nhật thư viện máy khách; giao thức hiện tại là 7.
Không kết nối lại với cùng thiết lập4008 No protocol version supplied
URL không có tham số protocol.
Cách xử lý: Thêm ?protocol=7 vào URL, hoặc dùng thư viện máy khách chính thức.
Không kết nối lại với cùng thiết lập4009 Connection is unauthorized
Máy chủ từ chối kết nối này: trên Hibira, lý do thường gặp nhất là origin của trang chưa được cho phép.
Cách xử lý: Thêm origin của trang web (scheme, máy chủ và cổng) vào danh sách origin được phép của ứng dụng. Thông điệp pusher:error trước khi đóng cho biết bước kiểm tra nào thất bại.
Không kết nối lại với cùng thiết lập4100 Over capacity
Máy chủ đang bận, hoặc có quá nhiều kết nối cùng lúc từ một địa chỉ.
Cách xử lý: Phần lớn trường hợp không cần làm gì: máy khách thử lại có giãn cách. Nếu lặp lại liên tục, hãy rải thời điểm kết nối lại thay vì để mọi máy khách kết nối lại cùng lúc.
Kết nối lại có giãn cách (back-off)4200 Generic reconnect immediately
Máy chủ yêu cầu máy khách kết nối lại, ví dụ vì đang khởi động lại.
Cách xử lý: Không cần làm gì: máy khách kết nối lại ngay.
Kết nối lại ngay4201 Pong reply not received
Máy chủ đã gửi ping nhưng không nhận được pong kịp thời.
Cách xử lý: Thường do tab đang ngủ hoặc mạng di động yếu. Nếu bạn tự viết máy khách, hãy trả lời pusher:ping bằng pusher:pong.
Kết nối lại ngay4202 Closed after inactivity
Kết nối nhàn rỗi quá lâu.
Cách xử lý: Không cần làm gì: máy khách sẽ kết nối lại. Hãy để activity timeout của máy khách ngắn hơn của máy chủ.
Kết nối lại ngay4301 Client event rejected due to rate limit
Một sự kiện máy khách bị bỏ vì kết nối gửi quá nhiều quá nhanh (hoặc trên Hibira, đã hết hạn mức tin nhắn trong ngày). Kết nối vẫn mở.
Cách xử lý: Gửi ít sự kiện máy khách hơn mỗi giây, ví dụ giới hạn tần suất sự kiện đang gõ hoặc con trỏ.
Kết nối vẫn mở
Mã WebSocket tiêu chuẩn
Các mã này đến từ tiêu chuẩn WebSocket (RFC 6455) và áp dụng cho mọi máy chủ WebSocket.
1000 Normal Closure
Kết nối được đóng có chủ đích và công việc đã xong.
Cách xử lý: Không có gì cần sửa.
1001 Going Away
Trang đã bị đóng hoặc tải lại, hoặc máy chủ đang tắt.
Cách xử lý: Không có gì cần sửa; kết nối lại khi trang hoặc máy chủ hoạt động trở lại.
1002 Protocol Error
Một bên đã gửi khung vi phạm giao thức WebSocket.
Cách xử lý: Tìm proxy đang sửa đổi lưu lượng, hoặc thư viện máy khách và máy chủ không tương thích.
1003 Unsupported Data
Tin nhắn thuộc loại bên kia không nhận được, ví dụ dữ liệu nhị phân gửi tới máy chủ chỉ nhận văn bản.
Cách xử lý: Gửi đúng loại máy chủ mong đợi (máy chủ Pusher nhận văn bản JSON).
1005 No Status Received
Khung đóng không có mã. Trình duyệt báo giá trị này; nó không bao giờ được gửi thật.
Cách xử lý: Riêng mã này không cho biết nguyên nhân; hãy xem nhật ký của máy chủ lúc đóng kết nối.
1006 Abnormal Closure
Kết nối bị ngắt mà không có khung đóng: mạng, TLS, proxy hoặc máy chủ đã kết thúc nó. Trình duyệt báo giá trị này; nó không bao giờ được gửi thật.
Cách xử lý: Kiểm tra máy chủ và cổng, việc dùng wss:// hay ws://, chứng chỉ, và thời gian chờ nhàn rỗi của proxy hoặc bộ cân bằng tải (gửi heartbeat thường xuyên hơn thời điểm chúng cắt kết nối nhàn rỗi). Trong trình duyệt, console thường hiển thị nguyên nhân.
1007 Invalid Frame Payload Data
Tin nhắn văn bản không phải UTF-8 hợp lệ.
Cách xử lý: Mã hóa văn bản bằng UTF-8, hoặc gửi dưới dạng nhị phân.
1008 Policy Violation
Máy chủ từ chối tin nhắn hoặc kết nối theo quy tắc riêng, như xác thực hoặc kiểm tra origin.
Cách xử lý: Kiểm tra quy tắc của máy chủ và lý do đóng.
1009 Message Too Big
Tin nhắn lớn hơn mức bên kia chấp nhận.
Cách xử lý: Gửi tin nhắn nhỏ hơn, hoặc chia nhỏ tin nhắn lớn.
1010 Mandatory Extension
Máy khách cần một tiện ích mở rộng mà máy chủ không đồng ý.
Cách xử lý: Tắt tiện ích mở rộng đó ở máy khách, hoặc bật nó ở máy chủ.
1011 Internal Error
Máy chủ gặp lỗi ngoài dự kiến.
Cách xử lý: Kiểm tra nhật ký máy chủ; kết nối lại có giãn cách.
1012 Service Restart
Máy chủ đang khởi động lại.
Cách xử lý: Kết nối lại sau một khoảng chờ ngắn, ngẫu nhiên.
1013 Try Again Later
Máy chủ đang quá tải.
Cách xử lý: Kết nối lại có giãn cách.
1014 Bad Gateway
Cổng hoặc proxy nhận được phản hồi không hợp lệ từ máy chủ phía sau.
Cách xử lý: Kiểm tra máy chủ phía sau proxy.
1015 TLS Handshake
Bắt tay TLS thất bại, ví dụ do chứng chỉ mà máy khách không tin cậy. Trình duyệt báo giá trị này; nó không bao giờ được gửi thật.
Cách xử lý: Kiểm tra chuỗi chứng chỉ, tên máy chủ và ngày hết hạn.
Các khoảng mã
- 1000–2999: dành riêng cho tiêu chuẩn WebSocket; mã này chưa được gán.
- 3000–3999: dành cho thư viện và framework đăng ký; hãy xem tài liệu của cái bạn dùng.
- 4000–4099: lỗi Pusher mà sau đó máy khách không kết nối lại với cùng thiết lập.
- 4100–4199: lỗi Pusher mà sau đó máy khách kết nối lại có giãn cách.
- 4200–4299: lỗi Pusher mà sau đó máy khách kết nối lại ngay.
- 4300–4399: lỗi Pusher mà kết nối vẫn mở.
- 4000–4999: dùng riêng. Ứng dụng hoặc dịch vụ gửi mã sẽ quy định ý nghĩa.
Lỗi đăng ký kênh
Đăng ký kênh private hoặc presence thất bại không đóng kết nối: máy khách nhận pusher:subscription_error. AuthError ở đó gần như luôn có nghĩa là chữ ký từ endpoint xác thực không khớp, vì secret, socket ID, tên kênh hoặc channel_data khác với lúc ký.
Kiểm tra kết nối bằng công cụ WebSocket → · Kích thước tin nhắn và các giới hạn khác →