2013-07-24 12 views
8

यह जांचने का सबसे आसान तरीका क्या है कि डिवाइस (स्मार्टफ़ोन) ऑनलाइन या ऑफलाइन है या नहीं। मैं फोनगैप, jQuery मोबाइल के साथ काम कर रहा हूं। मुझे यह मिला।डिवाइस को कैसे चेक करें ऑनलाइन या ऑफलाइन फोनगैप

document.addEventListener("online", yourCallbackFunction, false); 

मुझे क्या करना चाहते हैं इंटरनेट कनेक्शन जांचें और के बारे में इंटरनेट से या डिवाइस स्थानीय डेटाबेस से डेटा प्राप्त करने के लिए तय करने के लिए है।

if(deviceoffline) 
    getDataFromLokalDatabase(); 
else 
    getDataFromInternet(); 

उत्तर

9

आप navigator.onLine उपयोग कर सकते हैं:

var isOffline = 'onLine' in navigator && !navigator.onLine; 

if (isOffline) { 
    //local db 
} 
else { 
    // internet data 
} 

लेकिन अगर navigator.onLineisOffline समर्थित नहीं है हमेशा गलत होगा कि बारे में पता होना

+0

ठीक है, मैं क्रोम ब्राउज़र पर सामान्य परीक्षण करता हूं और केवल झूठा मिलता हूं। लेकिन मैं फोनगैप के साथ ऐप का निर्माण करता हूं और इसे अपने स्मार्टफोन पर परीक्षण करता हूं और यह काम करता है। धन्यवाद न्यूल। यू ने मुझे बहुत मदद की :) –

+0

नेविगेटर.ऑनलाइन विश्वसनीय नहीं है, कम से कम मेरे फोनगैप ऐप में नहीं (एंड्रॉइड 5 के साथ नेक्सस 4); Navigator.onLine हालांकि एक समर्थित विशेषता है। मुझे यह संबंधित प्रश्न भी मिला: http://stackoverflow.com/questions/14283124/navigator-online-not-always-working। –

2

Jquery एक ajax फोन करना और त्रुटि कोड की जाँच का उपयोग करना , यदि आपको 0 के रूप में त्रुटि कोड मिलता है तो डिवाइस ऑफलाइन है

$.ajax({ 
    //your ajax options 
    error: function (request) { 
     if (request.status == 0) { 
      alert("you're offline"); 
     } 
    } 
}); 
+1

स्थिति 0 का अर्थ है कि सर्वर अनुरोध का जवाब नहीं दे रहा है। यह * हो सकता है क्योंकि डिवाइस ऑफलाइन है, लेकिन इसका मतलब यह नहीं है कि यह है। – Jonathan

+0

हालांकि - अधिकांश मामलों में आप किस चीज की परवाह करते हैं यह है कि आपका ऐप आपके सर्वर से संवाद कर सकता है या नहीं ... तो यह प्रासंगिक है! – hajikelist

0

मूल ऑनलाइन कुछ हद तक कमजोर है, खासकर एक वेब ऐप पर्यावरण में .. लेकिन इसका उपयोग पेज लोड पर प्रारंभिक जांच के लिए किया जा सकता है, हालांकि यह कुछ हद तक बेकार है जैसे कि आप उस बिंदु पर पहुंचते हैं, आपके पास इंटरनेट कनेक्शन है।

कुछ अजाक्स करने का प्रयास करना अधिक विश्वसनीय है। जबकि navigator.onLine आसान समाधान, यह सभी ब्राउज़रों पर लगातार व्यवहार नहीं करता है,

function checkInternet() { 

    var networkState = navigator.connection.type; 

    if(networkState == Connection.NONE) { 

     onConnexionError(); 
     return false; 

    } else { 

     return true; 
    } 
} 
10

यह देशी phonegap कोड का उपयोग कर कोड है। क्रोम पर यह आपको बताएगा कि यदि आपके पास कोई इंटरनेट केबल नहीं है, तो यह ऑनलाइन है।

आप कॉर्डोबा प्लगइन का उपयोग कर सकते हैं network-information

तुम भी अपने सर्वर पर एक AJAX अनुरोध करने के लिए कोशिश कर सकते हैं; आम तौर पर आप जानना चाहते हैं कि क्या आप ऑफ़लाइन हैं क्योंकि उस मामले में आप सर्वर सर्वर से संवाद नहीं कर सकते हैं, इसलिए "ऑफ़लाइन" का अर्थ अक्सर "सर्वर से संवाद करने में सक्षम नहीं है" (जो आपके सर्वर को ऑफलाइन होने के कारण भी हो सकता है)। टाइमविड्थ या कई अनुरोधों के साथ बजाना भी उपयोगी है यदि आपको बैंडविड्थ या लिंक गुणवत्ता की जांच करने की आवश्यकता है।

ऑफलाइन का मतलब हर उपयोग के मामले के लिए समान नहीं है, आपको सबसे पहले यह जानने की आवश्यकता है कि उपरोक्त कौन सी तकनीक आपके लिए सबसे उपयुक्त है, फिर उनमें से एक या कई को लागू करें।

मैं क्या करना चाहता हूं इंटरनेट कनेक्शन की जांच करना और इंटरनेट से या डिवाइस स्थानीय डेटाबेस से डेटा प्राप्त करने का निर्णय लेना है।

ऐसा लगता है कि अनुरोध के माध्यम से आपके सर्वर के साथ लिंक की जांच करना आपके लिए सबसे अच्छा विकल्प है।

+2

आपको 'कनेक्शन .UNKNOWN' के लिए भी जांच करनी चाहिए – Mirko

संबंधित मुद्दे