ฉันต้องการเพิ่มบริการลงในแอพ Android ของฉันซึ่งทำงานอยู่เบื้องหลังโดยถือการเชื่อมต่อWebSocket (อาจใช้เวลาหลายชั่วโมงหรือหลายวัน) และส่งข้อมูลบางอย่างไปยังเซิร์ฟเวอร์เป็นประจำ
ตอนนี้ดูเหมือนจะมีห้องสมุด WebSocket จำนวนมากสำหรับ Java และฉันไม่แน่ใจว่าควรใช้อันไหน:
TooTallNate / Java-WebSocket คำอธิบายจาก GitHub: การใช้งานไคลเอนต์และเซิร์ฟเวอร์ของ WebSocket แบร์โบนที่เขียนด้วย Java 100% http://java-websocket.org/ - หนึ่งนี้มีการเชื่อมโยงในผลครั้งแรกของฉัน googling "หุ่นยนต์ WebSocket" อย่างไรก็ตามมีปัญหาที่เปิดอยู่เล็กน้อยโดยเฉพาะอย่างยิ่งเกี่ยวกับการเชื่อมต่อ SSL และดูเหมือนจะยังไม่ได้รับการบำรุงรักษาอย่างแข็งขันในขณะนี้
koush / AndroidAsync คำอธิบายจาก GitHub: ซ็อกเก็ตแบบอะซิงโครนัส http (ไคลเอนต์ + เซิร์ฟเวอร์), websocket และ socket.io ไลบรารี่สำหรับ Android อิงตาม nio ไม่ใช่เธรด - ปัญหาเปิดอีกมากมาย แต่ดูเหมือนว่าจะรักษา / ทำงาน activiley
โครงการ Tyrus คำอธิบายจากเว็บไซต์: JSR 356: Java API สำหรับ WebSocket - การดำเนินการอ้างอิง - นี้ทำโดย Oracle ไม่แน่ใจว่ามันใช้งานได้ใน Android หรือไม่
ข้อมูลลูกค้า Jetty WebSocket APIจากเว็บไซต์: Jetty ยังให้บริการห้องสมุดลูกค้า Jetty WebSocket เพื่อให้การเขียนพูดคุยกับเซิร์ฟเวอร์ WebSocket ง่ายขึ้น - อีกครั้ง: ไม่แน่ใจว่ามันใช้งานได้ใน Android
codebutler / หุ่นยนต์ WebSockets คำอธิบายจาก GitHub: เปลือย WebSockets ขั้นต่ำ (hybi13 / RFC) ไคลเอนต์สำหรับ Android - หนึ่งนี้จะใช้ใน schwiz / หุ่นยนต์ WebSocket-ตัวอย่างซึ่งเป็นคำตอบที่ได้รับการยอมรับสำหรับ StackOverflow คำถาม "วิธีการทำ อุปกรณ์ Android รักษาการเชื่อมต่อ TCP กับอินเทอร์เน็ตโดยไม่ล็อคการปลุกหรือไม่ "
Atmosphere / wasync คำอธิบายจาก GitHub: WebSockets ที่มีไลบรารีไคลเอ็นต์การถ่ายโอนทางเลือกสำหรับ Node.js, Android และ Java http://async-io.org
TakahikoKawasaki / nv-websocket-client คำอธิบายจาก GitHub: การใช้งานไคลเอนต์ WebSocket คุณภาพสูงใน Java
square / okhttp คำอธิบายจาก GitHub: ไคลเอ็นต์ HTTP + SPDY สำหรับแอปพลิเคชัน Android และ Java http://square.github.io/okhttp/ -
มันมีWebSocket โมดูลตามที่กล่าวไว้โดย scorpiodawg OkHttp มีการสนับสนุน websocket ในตัวตั้งแต่รุ่น 3.5firebase / TubeSock คำอธิบายจาก GitHub: ไลบรารีไคลเอ็นต์ WebSocket ที่ใช้งานใน Java
Autobahn | Android ( GitHub ) คำอธิบายจากเว็บไซต์: Autobahn | Android เป็นห้องสมุดเครือข่ายโอเพ่นซอร์สสำหรับ Java / Android ที่สร้างขึ้นโดยโครงการ Autobahn ที่ใช้โปรโตคอล WebSocket และ Web Application Messaging Protocol (WAMP) สำหรับสร้าง Mobile WebSocket / WAMP ลูกค้า - cloudsurfin ชี้ให้เห็นว่าสิ่งนี้ไม่สนับสนุน wss
นอกจากนี้ยังมีไลบรารี่ดั้งเดิมของsocket.ioสำหรับ Android:
- nkzawa / socket.io-client.java คำอธิบายจาก GitHub: ไลบรารีไคลเอ็นต์ Socket.IO แบบเต็มสำหรับ Java ซึ่งเข้ากันได้กับ Socket.IO v1.0 และใหม่กว่า
หากต้องการใช้ socket.io Android ไคลเอ็นต์จะเป็นประโยชน์สำหรับฉันเพราะฉันวางแผนที่จะใช้ nodejs / socket.io สำหรับส่วนหน้าของเว็บต่อไป แต่ลูกค้าในประเทศยังค่อนข้างใหม่และมีปัญหาเปิดหลายอย่าง และนอกจากนั้นฉันเข้าใจว่าแอพ android ไม่มีประโยชน์ใด ๆ ในการใช้ไลบรารีไคลเอ็นต์ socket.io (นอกเหนือจากการเข้ากันได้กับเซิร์ฟเวอร์ socket.io 1.0) เนื่องจากการสนับสนุน WebSocket สามารถมั่นใจได้ที่ฝั่งไคลเอ็นต์ .
ความต้องการของฉันมีดังนี้:
- ความเข้ากันได้กับ Android API 9 และสูงกว่า
- ความเป็นไปได้ในการเชื่อมต่อผ่าน SSL
- คงการเชื่อมต่อเป็นเวลานานโดยไม่ต้องถือ wakelock ถาวร
- ความเข้ากันได้กับการใช้งานเซิร์ฟเวอร์ nodejs websocket หรือกับ socket.io
ข้อเสนอแนะใดที่เป็นห้องสมุดที่เหมาะสมสำหรับข้อกำหนดเหล่านี้