Bạn có thể sử dụng WebSockets trong PhoneGap với iOS và Android. WebSockets được hỗ trợ nguyên bản trên iOS trong Safari. Đối với Android, bạn sẽ cần phải sử dụng một polyfill.
Xem: https://stackoverflow.com/a/13527585/39904
Câu trả lời trên đây cung cấp thông tin về làm thế nào để làm cho một đối tượng WebSocket sẵn trong WebView Android được sử dụng bởi PhoneGap và cũng cung cấp một liên kết đến một dự án mẫu mà bạn có thể sử dụng để bắt đầu.
WebSockets được phát triển như một giải pháp cho các cuộc tấn công 'Comet'. Vì vậy, chúng cung cấp một giải pháp độ trễ rất thấp cho truyền thông hai hướng thời gian thực giữa máy khách và máy chủ. Điều này có nghĩa là băng thông thấp và mức sử dụng tài nguyên thấp - pin trên thiết bị di động - vì bạn đang nắm giữ một kết nối duy nhất mở thay vì sau đó mở và đóng nhiều kết nối HTTP. Một giải pháp bỏ phiếu tạo ra các yêu cầu trong khoảng thời gian đều đặn có khả năng tiêu hao pin nhanh hơn nhiều so với giải pháp WebSocket.Nếu bạn đang bỏ phiếu ở những khoảng thời gian thấp hơn thì điều đó có thể tốt - điều đó phụ thuộc vào trường hợp sử dụng của bạn.
Về WebSockets hoạt động khi bạn thay đổi giữa mạng và loại mạng (WiFi -> 3G -> WiFi) thì nếu bạn đang sử dụng WebSockets, bạn cần phải phát hiện onclose
và kết nối lại. Bạn cũng sẽ cần phải xác định loại kết nối tốt nhất; không an toàn (WS) hoặc bảo mật (WSS). Tôi rất muốn giới thiệu bạn sử dụng WSS cho điện thoại di động vì một số nhà cung cấp mạng di động sử dụng proxy trong suốt có thể can thiệp vào các kết nối WS. Điều này nghe có vẻ phức tạp nhưng có một số thư viện xử lý việc này cho bạn. Chẳng hạn như Pusher JavaScript library (lưu ý: Tôi làm việc cho Pusher). Các thư viện như vậy cũng cung cấp dự phòng cho một giải pháp dựa trên HTTP kém hiệu quả hơn khi môi trường không cho phép bất kỳ kết nối WebSocket nào xảy ra.
Xem thêm: realtime web technology guide.
Tôi đồng ý với @ rmc47 rằng bạn nên xem xét thông báo đẩy gốc nếu thông báo đơn lẻ không thường xuyên
Điều gì sẽ xảy ra khi thiết bị thay đổi kết nối và tôi đang sử dụng websocket? Có một số loại sự kiện tôi có thể xử lý khi điều đó xảy ra không? ... Nếu tôi sử dụng thông báo đẩy, nó sẽ yêu cầu tích hợp API vào phần mềm phonegap? Tôi hầu như không có kinh nghiệm viết mã cho hệ thống bản địa, chỉ có ngôn ngữ phát triển web. – maxhud
@maxhud: nó phụ thuộc vào thư viện WebSocket (nhớ rằng bạn sẽ phải sử dụng một plugin, vì chúng không được hỗ trợ nguyên bản). Tôi đoán là trong hầu hết các trường hợp, họ sẽ chấm dứt kết nối. Cho dù bạn có thể phát hiện điều đó phụ thuộc vào API của thư viện hay không. Đối với thông báo đẩy, bạn cần sử dụng plugin PhoneGap. https://github.com/marknutter/GCM-Cordova hỗ trợ Nhắn tin qua đám mây của Google; https://github.com/purplecabbage/phonegap-plugins/tree/master/iOS/PushNotification hỗ trợ Thông báo đẩy của Apple. – rmc47
@maxhud ... tiếp tục: Lưu ý rằng nếu bạn đang sử dụng dịch vụ xây dựng được lưu trữ, chẳng hạn như PhoneGap Build hoặc Nomad cho Visual Studio (tiết lộ: Tôi thuộc nhóm Nomad), có thể bạn sẽ không thể sử dụng các plugin gốc như những cái tôi đã tham chiếu ở trên. Trong trường hợp đó, có thể bạn sẽ chỉ phải thăm dò ý kiến dịch vụ web của mình với tốc độ thích hợp. – rmc47