Tôi muốn thêm Dịch vụ vào ứng dụng Android chạy trên nền có kết nối WebSocket (có thể trong vài giờ hoặc thậm chí vài ngày) và thường xuyên gửi một số dữ liệu đến máy chủ.
Bây giờ dường như có một loạt các thư viện WebSocket cho Java và tôi không chắc nên sử dụng thư viện nào:
TooTallNate / Java-WebSocket Mô tả từ GitHub: Một triển khai máy khách và máy chủ WebSocket được viết bằng Java 100%. http://java-websocket.org/ - Cái này được liên kết trong kết quả đầu tiên của tôi về việc googling "websocket android" . Tuy nhiên, nó có khá nhiều vấn đề mở, đặc biệt là về các kết nối SSL và dường như nó không được duy trì tích cực vào lúc này.
koush / AndroidAsync Mô tả từ GitHub: Ổ cắm không đồng bộ, http (máy khách + máy chủ), websocket và thư viện socket.io cho Android. Dựa trên nio, không phải chủ đề. - Một lần nữa nhiều vấn đề mở, nhưng dường như được kích hoạt / duy trì.
Mô tả Tyrus dự án từ trang web: JSR 356: API Java cho WebSocket - Triển khai tham chiếu - Điều này được tạo bởi Oracle. Không chắc chắn nếu nó hoạt động trong Android.
Thông tin API ứng dụng khách của Jetty WebSocket từ trang web: Jetty cũng cung cấp Thư viện ứng dụng khách Jetty WebSocket để viết giúp việc nói chuyện với máy chủ WebSocket dễ dàng hơn. - Một lần nữa: Không chắc chắn nếu nó hoạt động trong Android.
codebutler / android-WebSockets Mô tả từ GitHub: Bare WebSockets tối thiểu (hybi13 / RFC) client cho Android - Cái này được sử dụng trong schwiz / android-WebSocket-ví dụ , đó là câu trả lời được chấp nhận cho StackOverflow-câu hỏi " Làm thế nào để làm cho Thiết bị Android giữ kết nối TCP với Internet mà không cần khóa thức? ".
Khí quyển / wasync Mô tả từ GitHub: WebSockets với dự phòng vận chuyển thư viện khách cho Node.js, Android và Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Mô tả từ GitHub: Triển khai ứng dụng khách WebSocket chất lượng cao trong Java.
ô vuông / okhttp Mô tả từ GitHub: Ứng dụng khách HTTP + SPDY cho các ứng dụng Android và Java. http://sapes.github.io/okhttp/ -
Nó có mô-đun Websocket .Như scorpiodawg đã đề cập , OkHttp có hỗ trợ websocket tích hợp kể từ phiên bản 3.5.firebase / TubeSock Mô tả từ GitHub: Thư viện máy khách WebSocket được triển khai trong Java
Autobahn | Android ( GitHub ) Mô tả từ trang web: Autobahn | Android là thư viện mạng nguồn mở cho Java / Android được tạo bởi dự án Autobahn thực hiện Giao thức WebSocket và Giao thức nhắn tin ứng dụng web (WAMP) để tạo WebSocket / WAMP di động gốc khách hàng - cloudurfin chỉ ra rằng điều này không hỗ trợ cho wss.
Ngoài ra, có một thư viện máy khách socket.io dành cho Android:
- nkzawa / socket.io-client.java Mô tả từ GitHub: Thư viện máy khách Socket.IO đầy đủ tính năng cho Java, tương thích với Socket.IO v1.0 trở lên.
Để sử dụng máy khách Android socket.io sẽ thuận tiện cho tôi, vì tôi dự định sử dụng nodejs / socket.io cho giao diện web bằng mọi cách. Nhưng khách hàng bản địa còn khá trẻ và có một số vấn đề mở. Và ngoài ra, tôi hiểu rằng một ứng dụng Android không có bất kỳ lợi ích nào khi sử dụng thư viện máy khách socket.io (ngoài việc tương thích với máy chủ socket.io 1.0), bởi vì hỗ trợ WebSocket có thể được đảm bảo ở phía máy khách .
Yêu cầu của tôi như sau:
- Khả năng tương thích với API Android 9 trở lên
- Khả năng kết nối qua SSL
- Giữ kết nối trong một thời gian dài mà không cần phải giữ một wakelock vĩnh viễn
- Khả năng tương thích với triển khai máy chủ websocket của nodejs hoặc với socket.io
Bất kỳ đề xuất nào là một thư viện phù hợp cho các yêu cầu này?