android - एंड्रॉइड ऐप में उपयोग करने के लिए कौन सा वेबसॉकेट पुस्तकालय है?




node.js websocket (2)

a) इस फाइल को gradle फाइल में जोड़ें

compile 'com.github.nkzawa:socket.io-client:0.3.0'

बी) एप्लिकेशन गतिविधि में इन पंक्तियों को जोड़ें:

    public class MyApplication extends Application {
     private Socket mSocket;
        {
            try {
               mSocket = IO.socket(Config.getBaseURL());

            } catch (URISyntaxException e) {
                throw new RuntimeException(e);
            }
        }

        public Socket getSocket() {
            return mSocket;
        }
}

c) इस फ़ंक्शन को अपनी गतिविधि में जोड़ें, जहां आपने WebSocket कहा है:

     private void websocketConnection() {
            //Get websocket from application
            MyApplication app = (MyApplication ) getApplication();
            mSocket = app.getSocket();
            mSocket.on(Socket.EVENT_CONNECT, onConnect);
            mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
            mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
            mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
            mSocket.on("messageFromServer", onNewLocation);
            mSocket.connect();
        } 


    private Emitter.Listener onConnect = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(() -> {
                if (!isConnected) {

                    RequestSocket mRequestSocket = new RequestSocket();

                    mRequestSocket.setToken("anil_singhania");
                   /* your parameter */
                    mSocket.emit("messageFromClient", new Gson().toJson(mRequestSocket));
                    Log.i("Socket Data", new Gson().toJson(mRequestSocket));
                    isConnected = true;
                }
            });
        }
    };

    private Emitter.Listener onDisconnect = args -> runOnUiThread(() -> {
        isConnected = false;
       /* Toast.makeText(getApplicationContext(),
                R.string.disconnect, Toast.LENGTH_LONG).show();*/
    });

    private Emitter.Listener onConnectError = args -> runOnUiThread(() -> {
         /*   Toast.makeText(getApplicationContext(),
            R.string.error_connect, Toast.LENGTH_LONG).show()*/
    });

    private Emitter.Listener onNewLocation = new Emitter.Listener() {
        @Override
        public void call(final Object... args) {
            runOnUiThread(() -> {


            });
        }
    };

मैं अपने एंड्रॉइड ऐप में एक Service जोड़ना चाहता हूं जो एक WebSocket कनेक्शन (संभवतः कई घंटों या दिनों तक) को पकड़े हुए पृष्ठभूमि में चलता है और नियमित रूप से कुछ डेटा सर्वर पर भेजता है।

अब जावा के लिए WebSocket पुस्तकालयों का एक समूह प्रतीत होता है, और मुझे यकीन नहीं है कि मुझे कौन सा उपयोग करना चाहिए:

  • TooTallNate/Java-WebSocket से वर्णन: एक TooTallNate/Java-WebSocket ग्राहक और सर्वर कार्यान्वयन 100% जावा में लिखा गया है। http://java-websocket.org/ - यह एक "googling" android websocket के मेरे पहले परिणाम से जुड़ा हुआ है। हालाँकि, इसमें कुछ खुले मुद्दे हैं, विशेष रूप से SSL कनेक्शन के बारे में, और यह फिलहाल सक्रिय रूप से बनाए रखने के लिए प्रतीत नहीं होता है।

  • koush/AndroidAsync GitHub से वर्णन: अतुल्यकालिक सॉकेट, http (क्लाइंट + सर्वर), वेबसोकेट, और एंड्रॉइड के लिए सॉकेट.आईओ लाइब्रेरी। Nio के आधार पर, धागे नहीं। - फिर से कई खुले मुद्दों, लेकिन लगता है सक्रियता बनाए रखा / पर काम किया।

  • वेबसाइट से प्रोजेक्ट टाइरस विवरण: JSR 356: जावा API for WebSocket - संदर्भ कार्यान्वयन - यह Oracle द्वारा बनाया गया है। यकीन नहीं होता कि यह एंड्रॉइड में काम करता है।

  • Jetty WebSocket Client API वेबसाइट से जानकारी: Jetty WebSocket क्लाइंट लाइब्रेरी को लिखने के लिए प्रदान करता है ताकि वे WebSocket क्लाइंट से बात करना आसान बना सकें। - फिर से यकीन नहीं है कि यह एंड्रॉइड में काम करता है।

  • codebutler/android-websockets विवरण: एंड्रॉइड के लिए नंगे न्यूनतम वेबसोकेट्स (hybi13 / RFC) क्लाइंट - यह एक schwiz/android-websocket-example में उपयोग किया जाता है, जो schwiz/android-websocket-example प्रश्न के लिए स्वीकृत उत्तर है " कैसे करें एंड्रॉइड डिवाइस बिना वेक लॉक के इंटरनेट से टीसीपी कनेक्शन रखता है? ”।

  • GitHub से Atmosphere/wasync विवरण: Node.js, Android और Java http://async-io.org के लिए फालबैक Atmosphere/wasync क्लाइंट लाइब्रेरी के साथ WebSockets

  • TakahikoKawasaki/nv-websocket-client वर्णन: जावा में उच्च-गुणवत्ता वाला WebSocket क्लाइंट कार्यान्वयन।

  • square/okhttp से square/okhttp विवरण: Android और Java अनुप्रयोगों के लिए एक HTTP + SPDY क्लाइंट। http://square.github.io/okhttp/ - इसमें एक वेबसोकेट मॉड्यूल है जैसा कि scorpiodawg द्वारा उल्लेख किया गया है , OkHttp ने 3.5 संस्करण के बाद से अंतर्निहित वेबसोकेट समर्थन किया है।

  • GitHub से firebase/TubeSock वर्णन: जावा में कार्यान्वित एक WebSocket क्लाइंट लाइब्रेरी

  • Autobahn|Android ( GitHub ) वेबसाइट से वर्णन: Autobahn | Android, ऑटोबान परियोजना द्वारा निर्मित जावा / एंड्रॉइड के लिए एक ओपन-सोर्स नेटवर्किंग लाइब्रेरी है, जो नेटिव मोबाइल वैबसाइट / WAMP बनाने के लिए WebSocket प्रोटोकॉल और वेब एप्लिकेशन मैसेजिंग प्रोटोकॉल (WAMP) को लागू करता है। ग्राहकों। - Cloudurfin ने बताया कि इसमें wss का कोई सपोर्ट नहीं है।

इसके अलावा, एंड्रॉइड के लिए एक देशी socket.io क्लाइंट लाइब्रेरी है:

  • nkzawa/socket.io-client.java GitHub से विवरण: जावा के लिए पूर्ण विशेषताओं वाले सॉकेट.आईओ क्लाइंट लाइब्रेरी, जो सॉकेट.आईओ v1.0 और बाद में संगत है।

Socket.io का उपयोग करने के लिए Android क्लाइंट मेरे लिए उपयोगी होगा, क्योंकि मैं वैसे भी वेब फ्रंट के लिए नोडज / सॉकेट.io का उपयोग करने की योजना बना रहा हूं। लेकिन मूल ग्राहक काफी युवा है और कई खुले मुद्दे हैं। और इसके अलावा, यह मेरी समझ है कि एक एंड्रॉइड ऐप में सॉकेट.आईओ क्लाइंट लाइब्रेरी (सॉकेट.आईओ 1.0 सर्वर के साथ संगत होने के अलावा) का उपयोग करने का कोई लाभ नहीं है, क्योंकि क्लाइंट साइड पर वेबस्केट समर्थन का आश्वासन दिया जा सकता है ।

मेरी आवश्यकताएं इस प्रकार हैं:

  • एंड्रॉइड एपीआई 9 और उच्चतर के साथ संगतता
  • SSL के माध्यम से जुड़ने की संभावना
  • स्थायी वैकेलॉक को पकड़े बिना लंबे समय तक संबंध बनाए रखें
  • उपलब्ध नोडजेस वेबसोकेट सर्वर कार्यान्वयन के साथ या सॉकेट.आईओ के साथ संगतता

कोई सुझाव जो इन आवश्यकताओं के लिए सही पुस्तकालय है?


कुछ अन्य विचार:

Tyrus Android पर काम करता है। हालाँकि, एंड्रॉइड 5.0 में इसका उपयोग करने वाले एसएसएल लाइब्रेरीज़ छोटी-छोटी हैं और एसएसएल हैंडशेक विफल हो जाते हैं । यह एंड्रॉइड के नए संस्करणों में तय माना जाता है, लेकिन जिस तरह से एंड्रॉइड कई उपकरणों पर अपडेट नहीं किया गया है, यह आपके लिए एक समस्या हो सकती है।

SSL अन्य वेबसोकेट कार्यान्वयन के लिए कैसे लागू किया जाता है, इसके आधार पर, यह एक समस्या भी हो सकती है।

AndroidAsync में यह SSL समस्या नहीं है। इसमें अन्य मुद्दे हैं जैसे टाइमआउट सेट न कर पाना ।





websocket