Sự khác biệt giữa websockets và bỏ phiếu dài cho máy chủ trò chơi theo lượt


89

Tôi đang viết một máy chủ cho một trò chơi iOS. Trò chơi diễn ra theo lượt và thời điểm duy nhất máy chủ cần để đẩy thông tin đến máy khách là thông báo về nước đi của đối thủ.

Tôi tò mò liệu có ai có thể nhận xét về sự khác biệt giữa hiệu suất và dễ triển khai giữa việc sử dụng websockets và bỏ phiếu dài không. Ngoài ra, nếu tôi đã sử dụng websockets, tôi chỉ nên sử dụng nó để nhận thông tin và gửi yêu cầu POST cho mọi thứ khác hay mọi giao tiếp phải thông qua websocket?

Ngoài ra, có điều gì cần cân nhắc giữa websockets và cuộc thăm dò ý kiến ​​dài nếu tôi quan tâm đến việc tạo một ứng dụng khách web không?


6
Bạn cũng có thể sử dụng Thông báo đẩy để thông báo cho khách hàng về dữ liệu mới. Tôi tin rằng sẽ hiệu quả hơn (pin khôn ngoan), so với hai giải pháp mà bạn đã xem xét.
pteofil

1
điều đó sẽ hoạt động như thế nào nếu người dùng vẫn ở trong ứng dụng?
có tính axit

4
Bạn cũng được thông báo trong ứng dụng khi nhận được thông báo đẩy.
pteofil

Câu trả lời:


177

Long thăm dò là gì?

nhập mô tả hình ảnh ở đây Một biến thể của kỹ thuật thăm dò truyền thống và cho phép mô phỏng một thông tin đẩy từ máy chủ đến máy khách. Với cuộc thăm dò dài, máy khách yêu cầu thông tin từ máy chủ theo cách tương tự như một cuộc thăm dò thông thường.

  • Nếu máy chủ không có bất kỳ thông tin nào cho máy khách, thay vì gửi một phản hồi trống, máy chủ giữ yêu cầu và đợi một số thông tin có sẵn.
  • Khi thông tin có sẵn (hoặc sau một khoảng thời gian chờ thích hợp), một phản hồi hoàn chỉnh sẽ được gửi đến khách hàng. Sau đó, máy khách thường sẽ ngay lập tức yêu cầu lại thông tin từ máy chủ, do đó máy chủ hầu như luôn có một yêu cầu chờ sẵn có mà nó có thể sử dụng để cung cấp dữ liệu đáp ứng một sự kiện.

    Trong ngữ cảnh web / AJAX, bỏ phiếu dài còn được gọi là lập trình Comet.

Còn về Websockets?

nhập mô tả hình ảnh ở đây WebSockets cung cấp kết nối liên tục giữa máy khách và máy chủ mà cả hai bên có thể sử dụng để bắt đầu gửi dữ liệu bất kỳ lúc nào.

  • Máy khách thiết lập kết nối WebSocket thông qua một quá trình được gọi là bắt tay WebSocket. Quá trình này bắt đầu với việc máy khách gửi một yêu cầu HTTP thông thường đến máy chủ.
  • Tiêu đề Nâng cấp được bao gồm trong yêu cầu này để thông báo cho máy chủ rằng máy khách muốn thiết lập kết nối WebSocket.

Kết luận :

Nếu có nhu cầu giao tiếp Thời gian thực, bạn rất có thể lựa chọn websockets.

Nhưng trong Long Polling:

Một kết nối được giữ mở giữa máy khách web và máy chủ web để khi máy chủ có thông tin mới, nó có thể đẩy nó đến máy khách. Yêu cầu đó sau đó đã hoàn thành. Một yêu cầu mới sau đó được thực hiện giữa máy khách và máy chủ và sau đó đợi một bản cập nhật khác từ máy chủ. Kết nối TCP giống nhau thường được mở liên tục trong suốt nhiều yêu cầu do các bí danh HTTP / 1.1.

Tài liệu tham khảo và các cân nhắc khác:

PubNub long polling vs socket - thời lượng pin di động

Long-Polling, Websockets, Server-Sent Events (SSE) và Comet là gì?

bỏ phiếu dài trong mục tiêu-C

Giới thiệu Websocket

Websocket Vs Long Polling

Sử dụng Websockets trong ứng dụng

Ứng dụng Websocket

PushTechnology-Long Polling

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.