2013-01-12 47 views
7

Để liên lạc giữa trò chơi nhiều người chơi Android giữa những người chơi, tôi đang sử dụng máy chủ WebSocket và TooTallNate's Java library ở phía máy khách để bật hỗ trợ WebSocket trong ứng dụng Android. Vì vậy, để chỉ ra rõ ràng, hỗ trợ WebSocket trong trình duyệt di động không quan trọng đối với tôi.Hỗ trợ WebSocket trên thiết bị di động

Thật không may, người dùng báo cáo rằng họ đang gặp sự cố, chẳng hạn như lỗi kết nối hoặc tin nhắn không được nhận. Đó có phải là vấn đề chung của WebSockets trên thiết bị di động (cổng bị chặn, tường lửa, kết nối Internet di động) hay có thể là một lỗ hổng trong mã phía máy khách?

Bạn có kinh nghiệm với các thư viện ứng dụng WebSocket như thư viện ở trên không? Tôi vừa phát hiện ra autobahn.ws for Android - nhưng tôi không biết liệu nó có đáng để chuyển đổi từ thư viện hiện tại của tôi hay không (xem ở trên).

Còn WAMP thì sao? Là công nghệ WebSocket không chính xác giải pháp thích hợp để tôi nên sử dụng giao thức con (?) WAMP?

Trả lời

4

Mỗi công nghệ mới đi kèm với một bộ vấn đề mới. Trong trường hợp WebSocket, nó là khả năng tương thích với các máy chủ proxy làm trung gian kết nối HTTP trong hầu hết các mạng công ty. Giao thức WebSocket sử dụng hệ thống nâng cấp HTTP (thường được sử dụng cho HTTP/SSL) để "nâng cấp" kết nối HTTP lên kết nối WebSocket. Một số máy chủ proxy không thích điều này và sẽ thả kết nối. Do đó, ngay cả khi một máy khách đã cho sử dụng giao thức WebSocket, nó có thể không thể thiết lập kết nối.

+0

Cảm ơn bạn! Điều đó có nghĩa rằng, bất kể thư viện khách hàng được sử dụng và thiết bị di động (hoặc nhà cung cấp dịch vụ), WebSockets sẽ luôn luôn nghi ngờ vì các proxy? Mặt khác, khi sử dụng gói dữ liệu di động, bạn thường không có proxy ở giữa, phải không? – caw

+0

cho câu hỏi đầu tiên. Có cho câu hỏi thứ hai. Điều đó phụ thuộc, thông thường chúng ta có. – atta

+0

cũng có, bạn có thể vui lòng chia sẻ mã của bạn để kết nối và gửi tin nhắn trên web và máy chủ của khách hàng không? – atta

8

Có những lỗi tương tự với kết nối ổ cắm web kém trên một số mạng di động nhất định. Giải quyết chúng bằng cách:

(1) di chuyển cổng: Di chuyển qua server và client cho WebSocket qua vào cổng SSL (cổng 443)

(2) ping giữ-sống: Gửi định kỳ "ping" thông điệp từ khách hàng đến máy chủ mỗi X giây và chờ một "pong" để trở về từ máy chủ. Nếu máy chủ không trả lại "pong" trong vòng Y giây, hãy khởi động lại kết nối trên máy khách.

triển khai (1) sẽ giúp bạn tận dụng tối đa.

+0

Tôi thấy rằng ping khá quan trọng bởi vì trạng thái hiện tại (tính đến năm 2016) của các ứng dụng websocket dành cho Android và iOS không xử lý kết nối nhàn rỗi trong vùng phủ sóng kém, hoặc thậm chí qua wifi trong một số trường hợp. – Nick

Các vấn đề liên quan