जब उपयोग में नहीं है तो व्हाट्सएप संदेश कैसे प्राप्त कर सकता है?


23

मैं इस बात को लेकर उत्सुक हूं कि व्हाट्सएप संदेशों का उपयोग करने में सक्षम नहीं है।

मेरा मतलब है, मैं समझता हूं कि व्हाट्सएप सेलफोन नेटवर्क के बजाय इंटरनेट कनेक्शन का उपयोग करता है। कल्पना कीजिए कि मैंने अपने फोन को घंटों तक नहीं छुआ है। उस समय, एक मित्र मुझे व्हाट्सएप पर एक संदेश भेजता है। मुझे तुरंत मिल जाता है। क्या इसका मतलब यह है कि व्हाट्सएप हर समय इंटरनेट कनेक्शन को कनेक्ट कर रहा है? क्या इसका मतलब है कि व्हाट्सएप सर्वर के रूप में कार्य करता है, फोन पर पोर्ट खोल रहा है? या शायद एक लंबे समय से चल रहा HTTP अनुरोध?


इसके अलावा whatsapp.com/faq/en/s60/20910578
Pacerier

इसके अलावा highscalability.com/blog/2014/2/26/…
Ivan Chau

जवाबों:


18

सबसे पहले, मैंने सोचा कि यह डिवाइस मैसेजिंग के लिए एंड्रॉइड क्लाउड का सबसे अधिक उदाहरण है , लेकिन ऐसा नहीं हो सकता है: व्हाट्सएप आवश्यक अनुमतियों की घोषणा नहीं करता है, और यह एक्लेयर (एंड्रॉइड 2.1) में काम करता है, जबकि क्लाउड टू डिवाइस मैसेजिंग ( और इसके प्रतिस्थापन, Google क्लाउड मैसेजिंग) में कम से कम Froyo (Android 2.2) की आवश्यकता होती है।

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

उपयोग में नहीं होने पर संदेशों को प्राप्त करने में सक्षम होने के बारे में यह हिस्सा, हालांकि, समझाना अपेक्षाकृत आसान है। एप्लिकेशन में लगभग निश्चित रूप से एक सेवा होती है जो समय-समय पर सर्वर के साथ (या सर्वर पुश, या जो कुछ भी करता है) की जांच करने के लिए पृष्ठभूमि में चलती है। जब आप एक संदेश प्राप्त करते हैं, तो सेवा एक अधिसूचना को पॉप अप करती है।

सवाल के लिए के रूप में कैसे सर्वर एक धक्का कर सकता है, यहाँ एक संभावना है (फिर से, मैं स्रोत कोड के बिना सत्यापित नहीं कर सकता):

  1. WhatsApp शुरू होता है और दो सॉकेट खोलता है: एक पर सुनने के लिए और एक सर्वर पर संदेश भेजने के लिए।
  2. व्हाट्सएप पहले सॉकेट पर सुनना शुरू कर देता है।
  3. व्हाट्सएप आपके फोन नंबर और श्रवण सॉकेट के पोर्ट से एक संदेश भेजता है और एक पावती के लिए इंतजार करता है।
  4. सर्वर फोन और पोर्ट नंबर को संदेश में रिकॉर्ड करता है और आईपी पते से संदेश आता है।
  5. सर्वर एप्लिकेशन को एक पावती भेजता है।
  6. एप्लिकेशन पावती प्राप्त करता है और संदेश सॉकेट बंद कर देता है।
  7. गंतव्य में सर्वर के आते ही आपके फ़ोन नंबर के साथ एक संदेश।
  8. सर्वर आपके फोन नंबर के साथ जुड़े आईपी पते और पोर्ट नंबर का उपयोग करता है और उस जानकारी का उपयोग आपके फोन पर संदेश को धकेलने के लिए करता है।

इस काम के लिए, ऐप को नेटवर्क कनेक्शन की स्थिति पर नजर रखने और सुनने के सॉकेट को रीसेट करने की आवश्यकता होगी / यदि आवश्यक हो तो पंजीकरण संदेश को फिर से भेजें (यदि आईपी पता बदलता है, उदाहरण के लिए)।


2
क्या व्हाट्सएप प्लेस्टोर ऐप पर निर्भर करता है? विकिपीडिया लिंक से उद्धृत करना: इसके लिए Android 2.2 या उच्चतर चलने वाले उपकरणों की आवश्यकता होती है, जिनमें Market एप्लिकेशन भी इंस्टॉल किया गया हो। तो यह बिल्कुल नहीं हो सकता है, लेकिन निश्चित रूप से समान सिद्धांतों पर आधारित है। आप लेख के दूसरे पैराग्राफ से कुछ अंश शामिल करना चाह सकते हैं, हालाँकि, अपने उत्तर को अधिक मूल्यवान बनाने के लिए (और अप-डाउन प्राप्त कर सकते हैं;)
Izzy

आप काफी सही हैं, @ मैं, मुझे और विवरण जोड़ना चाहिए था। यद्यपि मैं अपने एसजीएस 3 पर सबवे लेखन में बैठा था, हालांकि यह करना कठिन था। मैंने अब जवाब अपडेट कर दिया है। :-)
ट्रेबोर रूड

3
नेट स्टेप 8 की अनुमति नहीं देगा, भले ही मोबाइल स्टैटिक आईपी पर हो, जो कभी भी ऐसा नहीं होगा। संभव तरीके या तो Xmpp या लंबे समय तक मतदान कर रहे हैं http

1
इसके लिए आवश्यक अनुमति है। इसे Play Store में "इंटरनेट से डेटा प्राप्त करें" के रूप में सूचीबद्ध किया गया है। देखें android.stackexchange.com/a/61794
nyuszika7h

2
दुर्भाग्य से, आने वाले टीसीपी कनेक्शन मोबाइल उपकरणों पर असंभव के बगल में हैं। उनमें से अधिकांश लोगों के पास सार्वजनिक आईपी पते नहीं हैं, और भले ही वे करते हैं (उदाहरण के लिए आईपीवी 6 सक्षम ऑपरेटरों के लिए), आने वाले कनेक्शन आमतौर पर फ़िल्टर किए जाते हैं। अधिकांश एप्लिकेशन आज या तो Google की पुश सेवाओं का उपयोग करते हैं या सर्वर सॉकेट कनेक्शन (सबसे विशेष रूप से फेसबुक) के लिए अपने स्वयं के निरंतर ग्राहक को रोल करते हैं। व्हाट्सएप हाइब्रिड एप्रोच ले रहा है, मेरे अनुभव में: अगर जीसीएम उपलब्ध है, तो कुछ मिनट के लिए निष्क्रिय रहने के बाद लगातार सॉकेट बंद हो जाता है।
lxgr

8

मुझे पूरा यकीन है कि व्हाट्सएप किसी भी सुनने वाले पोर्ट को नहीं खोलता है। अधिकांश ISP आने वाले अनुरोधों को रोकते हैं, जो काम नहीं करेंगे।

व्हाट्सएप की एक सेवा है। मूल रूप से इसका मतलब है कि तकनीकी रूप से आपने व्हाट्सएप कभी नहीं छोड़ा। तो, जिस तरह से आप संदेश भेज रहे हैं, "व्हाट्सएप" नहीं चल रहा है, ठीक वैसा ही तरीका है जैसा कि आप उन्हें चलाते समय प्राप्त करते हैं।

क्लाइंट, इस मामले में व्हाट्सएप, सर्वर से जुड़ता है। क्लाइंट उस कनेक्शन को बनाए रखता है। जब सर्वर के पास कहने के लिए कुछ नया होता है, तो वह क्लाइंट को उस कनेक्शन के माध्यम से भेजता है, और यह सब।

आपका पहला अनुमान सही है।

व्हाट्सएप का कोई सही लॉग आउट तंत्र नहीं है, इसे देखें

व्हाट्सएप के पास लॉगआउट मैकेनिज्म नहीं है। एप्लिकेशन को हमेशा कनेक्ट करने के लिए डिज़ाइन किया गया है ताकि आप अपने संदेशों को जल्दी से प्राप्त कर सकें, तब भी जब आप सक्रिय रूप से अपने फोन का उपयोग नहीं कर रहे हों। यह एसएमएस के काम करने के तरीके के समान है और व्हाट्सएप संदेशों को लगभग तुरंत डिलीवर करने की अनुमति देता है।


2
आपका लिंक नोकिया के लिए है - मैं उनकी साइट पर एंड्रॉइड के लिए एक समान प्रश्न नहीं ढूंढ पाया। क्या आप सुनिश्चित हैं कि वही Android पर लागू होता है? उनके एंड्रॉइड एफएक्यू से यह प्रश्न इंगित करता है कि यह एक PUSH वास्तुकला का उपयोग करता है (अनुभाग के तहत "क्या संदेश अभी भी आपके फोन तक पहुंचने में बहुत लंबा समय ले रहे हैं?") - लगातार कनेक्ट किए गए सर्वर / क्लाइंट के बजाय।
डायलन यागा

2
@ डायलनयागा सही है। इस उत्तर के अंतिम पैराग्राफ को देखें और ट्रेबर्स यहां उत्तर दें
इज़ी

यह सबसे तर्कसंगत लगता है। कई बार इन सेवाओं को पुश सर्विसेज कहा जाता है, लेकिन मैं कल्पना नहीं कर सकता कि क्लाइंट एक पोर्ट खोलेगा और वास्तव में एक स्थानीय सर्वर के रूप में काम करेगा। यह निश्चित रूप से सुरक्षा मुद्दों का कारण होगा।
SPRBRN

1

उनके FAQ से पता चलता है कि वे GCM का उपयोग करते हैं। "क्या आपके फोन तक पहुंचने के लिए संदेश अभी भी बहुत लंबा समय ले रहे हैं?"


आप सही हैं कि FAQ यह सुझाव देता है, लेकिन जैसा कि ट्रेबोर रूड बताते हैं, ऐप में आवश्यक अनुमति नहीं है, इसलिए वे GCI स्वयं का उपयोग नहीं कर सकते हैं।
डैन हुल्मे

2
इसके लिए आवश्यक अनुमति है। इसे Play Store में "इंटरनेट से डेटा प्राप्त करें" के रूप में सूचीबद्ध किया गया है। देखें android.stackexchange.com/a/61794
nyuszika7h

2
मैंने जो देखा है, उसमें से वे GCM का उपयोग करते हैं यदि यह उपलब्ध है। यदि यह किसी कारण से अनुपलब्ध है (उदाहरण के लिए प्ले सेवाओं के बिना किसी डिवाइस पर या यदि नेटवर्क द्वारा फ़िल्टर किया जाता है), तो सॉकेट अनिश्चित काल के आसपास रखा जाता है।
lxgr

0

व्हाट्सएप जैसे अन्य ऐप सेवा के रूप में चलाए जाते हैं। (आप हमेशा जुड़े रहते हैं) आपको भेजे गए संदेश 30 दिनों तक व्हाट्सएप सर्वर पर संग्रहीत होते हैं, जिस अवधि में आपका व्हाट्सएप संदेश प्राप्त करने और प्राप्त करने के लिए सक्रिय होना चाहिए। अलग-अलग खातों को उपयोगकर्ता फोन नंबर @ whatsapp.net के साथ संग्रहीत किया जाता है


1
30 दिन । कृपया इस तथ्य के लिए स्रोत लिंक करें
beeshyams

0

मुझे लगता है कि यह इस तरह होना चाहिए:

जब व्हाट्सएप नया था, तो उसने पीएनएस आधारित समाधान का उपयोग किया होगा, यह पीएनएस केवल डिवाइस को जगाएगा और एक बार जब यह उठ जाएगा, तो यह व्हाट्सएप सर्वर के लिए एक सॉकेट कनेक्शन बना सकता है।

व्हाट्सएप लोकप्रिय होने के बाद अब ज्यादातर डिवाइस देशी एप्लिकेशन के रूप में आ रहे हैं और देशी एप्लिकेशन को नहीं मारा जाएगा। मेरे सैमसंग s8 में मैं व्हाट्सएप की स्थापना रद्द नहीं कर सकता, पावर सेविंग मोड इसे नहीं मार सकता

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.