WhatsApp สามารถรับข้อความเมื่อไม่ใช้งานได้อย่างไร?


23

ฉันอยากรู้ว่า WhatsApp สามารถรับข้อความได้อย่างไรเมื่อไม่ได้ใช้งาน

ฉันหมายถึงฉันเข้าใจว่า WhatsApp ทำงานได้โดยใช้การเชื่อมต่ออินเทอร์เน็ตแทนเครือข่ายมือถือ ลองนึกภาพว่าฉันไม่ได้แตะต้องโทรศัพท์ในเวลาไม่กี่ชั่วโมง ในขณะนั้นเพื่อนส่งข้อความถึงฉันใน WhatsApp ฉันได้รับทันที นั่นหมายความว่า WhatsApp เชื่อมต่ออินเทอร์เน็ตอยู่ตลอดเวลาหรือไม่? นั่นหมายความว่า WhatsApp ทำหน้าที่เป็นเซิร์ฟเวอร์เปิดพอร์ตบนโทรศัพท์หรือไม่ หรืออาจจะเป็นคำขอ HTTP ที่ทำงานมานาน



คำตอบ:


18

ตอนแรกฉันคิดว่านี่น่าจะเป็นอินสแตนซ์ของการส่งข้อความไปยังอุปกรณ์ Android cloudแต่ไม่สามารถทำได้: WhatsApp ไม่ได้ประกาศการอนุญาตที่จำเป็นและใช้งานได้ใน Eclair (Android 2.1) ในขณะที่การส่งข้อความบนคลาวด์ และการแทนที่ Google Cloud Messaging) ต้องการ Froyo อย่างน้อย (Android 2.2)

อย่างไรก็ตามเป็นไปได้มากว่าบริการแจ้งเตือนแบบพุช เป็นไปไม่ได้ที่จะบอกว่าวิธีการใช้งานโดยไม่ต้องเข้าถึงซอร์สโค้ดของ WhatsApp

ส่วนที่เกี่ยวกับการรับข้อความเมื่อไม่ได้ใช้งานนั้นค่อนข้างอธิบายได้ง่าย แอพมีบริการที่ทำงานอยู่เบื้องหลังเพื่อเช็คอินกับเซิร์ฟเวอร์เป็นระยะ ๆ (หรือรับการพุชของเซิร์ฟเวอร์หรืออะไรก็ตามที่ทำ) เมื่อคุณได้รับข้อความบริการปรากฏขึ้นการแจ้งเตือน

สำหรับคำถามเกี่ยวกับวิธีที่เซิร์ฟเวอร์สามารถทำการพุชนี่เป็นไปได้ (อีกครั้งฉันไม่สามารถยืนยันได้หากไม่มีซอร์สโค้ด):

  1. WhatsApp เริ่มต้นและเปิดซ็อกเก็ตสองซ็อกเก็ตหนึ่งช่องเพื่อฟังและอีกหนึ่งช่องเพื่อส่งข้อความไปยังเซิร์ฟเวอร์
  2. WhatsApps เริ่มฟังจากซ็อกเก็ตแรก
  3. WhatsApp จะส่งข้อความที่มีหมายเลขโทรศัพท์ของคุณและพอร์ตของซ็อกเก็ตการฟังไปยังเซิร์ฟเวอร์และรอการตอบรับ
  4. เซิร์ฟเวอร์บันทึกหมายเลขโทรศัพท์และหมายเลขพอร์ตในข้อความและที่อยู่ IP ที่ข้อความมาจาก
  5. เซิร์ฟเวอร์ส่งการตอบรับไปยังแอป
  6. แอพได้รับการตอบรับและปิดซ็อกเก็ตข้อความ
  7. ข้อความที่มีหมายเลขโทรศัพท์ของคุณเป็นปลายทางมาถึงเซิร์ฟเวอร์
  8. เซิร์ฟเวอร์ใช้ที่อยู่ IP และหมายเลขพอร์ตที่เชื่อมโยงกับหมายเลขโทรศัพท์ของคุณและใช้ข้อมูลนั้นเพื่อส่งข้อความไปยังโทรศัพท์ของคุณ

เพื่อให้สามารถใช้งานได้แอปจะต้องตรวจสอบสถานะของการเชื่อมต่อเครือข่ายและรีเซ็ตซ็อกเก็ตการฟัง / ส่งข้อความการลงทะเบียนอีกครั้งเมื่อจำเป็น (ตัวอย่างเช่นหากที่อยู่ IP เปลี่ยนไป)


2
Whatsapp ขึ้นอยู่กับแอพ playstore หรือไม่? การอ้างอิงจากลิงค์ Wikipedia: มันต้องมีอุปกรณ์ที่ใช้ Android 2.2 ขึ้นไปที่มีแอปพลิเคชัน Market ติดตั้งอยู่ ดังนั้นอาจไม่เป็นอย่างนั้น แต่แน่นอนขึ้นอยู่กับหลักการเดียวกัน คุณอาจต้องการรวมข้อความที่ตัดตอนมาบางส่วนจากย่อหน้าที่ 2 ของบทความเพื่อทำให้คำตอบของคุณมีค่ามากขึ้น (และรับ upvotes มากขึ้น)
Izzy

คุณค่อนข้างถูกต้อง @Izzy ฉันควรจะเพิ่มรายละเอียดเพิ่มเติม มันเป็นเรื่องยากที่จะทำในขณะที่ฉันนั่งที่ Subway เขียนลงใน SGS3 ของฉัน ฉันได้อัพเดทคำตอบแล้ว :-)
Trebor Rude

3
แน็ตจะไม่อนุญาตให้มีขั้นตอนที่ 8 แม้ว่าโทรศัพท์มือถือจะอยู่บนสแตติกไอพีซึ่งจะไม่เกิดขึ้น วิธีที่เป็นไปได้คือ Xmpp หรือแบบสำรวจความยาว http

1
มันมีสิทธิ์ที่จำเป็น มันระบุว่าเป็น "รับข้อมูลจากอินเทอร์เน็ต" ใน Play Store ดูandroid.stackexchange.com/a/61794
nyuszika7h

2
น่าเสียดายที่การเชื่อมต่อ TCP ขาเข้าอยู่ติดกับอุปกรณ์พกพาที่เป็นไปไม่ได้ ส่วนใหญ่ที่ท่วมท้นไม่มีที่อยู่ IP สาธารณะและแม้ว่าพวกเขาจะทำ (เช่นสำหรับผู้ให้บริการที่สามารถใช้งาน IPv6 ได้) แต่การเชื่อมต่อขาเข้าจะถูกกรอง แอปพลิเคชั่นส่วนใหญ่ในปัจจุบันใช้บริการพุชของ Google หรือหมุนไคลเอนต์ถาวรไปยังการเชื่อมต่อซ็อกเก็ตเซิร์ฟเวอร์ (โดยเฉพาะ Facebook) WhatsApp ดูเหมือนจะใช้วิธีไฮบริดจากประสบการณ์ของฉัน: ถ้ามี GCM อยู่ซ็อกเก็ตแบบถาวรจะถูกปิดหลังจากไม่ได้ใช้งานเป็นเวลาสองสามนาที
lxgr

8

ฉันมั่นใจว่า WhatsApp จะไม่เปิดพอร์ตการฟังใด ๆ ISP ส่วนใหญ่บล็อกคำขอที่เข้ามาซึ่งจะไม่ทำงาน

WhatsApp มีบริการ โดยทั่วไปหมายความว่าคุณไม่เคยออกจาก WhatsApp ในทางเทคนิค ดังนั้นวิธีที่คุณรับข้อความในขณะที่คุณ "ไม่ได้ใช้งาน" WhatsApp เป็นแบบเดียวกับที่คุณรับเมื่อใช้งาน

ลูกค้าในกรณีนี้ WhatsApp เชื่อมต่อกับเซิร์ฟเวอร์ ไคลเอนต์รักษาการเชื่อมต่อนั้น เมื่อเซิร์ฟเวอร์มีสิ่งใหม่ที่จะพูดก็จะส่งไปยังลูกค้าผ่านการเชื่อมต่อนั้นและนั่นคือทั้งหมด

การเดาครั้งแรกของคุณถูกต้อง

WhatsApp ไม่เคยมีใครเข้าสู่ระบบที่แท้จริงออกกลไกเห็นนี้

WhatsApp ไม่มีกลไกการล็อกเอาต์ แอปพลิเคชันได้รับการออกแบบให้เชื่อมต่ออยู่ตลอดเวลาเพื่อให้คุณได้รับข้อความอย่างรวดเร็วแม้ในขณะที่คุณไม่ได้ใช้โทรศัพท์ของคุณ สิ่งนี้คล้ายกับวิธีการทำงานของ SMS และช่วยให้สามารถส่งข้อความ WhatsApp ได้เกือบจะทันที


2
ลิงก์ของคุณสำหรับ Nokia - ฉันไม่พบคำถามที่คล้ายกันสำหรับ Android บนเว็บไซต์ของพวกเขา คุณแน่ใจหรือว่าใช้กับ Android ได้ คำถามนี้จากคำถามที่พบบ่อย Android ของพวกเขาบ่งชี้ว่ามันใช้สถาปัตยกรรม PUSH (ภายใต้หัวข้อ "ข้อความยังคงใช้เวลานานเกินไปในการเข้าถึงโทรศัพท์ของคุณหรือไม่") - แทนที่จะเป็นเซิร์ฟเวอร์ / ไคลเอนต์ที่เชื่อมต่ออยู่ตลอดเวลา
Dylan Yaga

2
@DylanYaga ถูกต้อง ดูเช่นย่อหน้าสุดท้ายของคำตอบนี้และTrebors ตอบที่นี่
Izzy

นี่ดูเหมือนจะสมเหตุสมผลที่สุด หลายครั้งที่บริการเหล่านี้เรียกว่าบริการพุช แต่ฉันไม่สามารถจินตนาการได้ว่าลูกค้าจะเปิดพอร์ตและในความเป็นจริงแล้วจะทำหน้าที่เป็นเซิร์ฟเวอร์ท้องถิ่น แน่นอนว่าจะทำให้เกิดปัญหาด้านความปลอดภัย
SPRBRN

1

คำถามที่พบบ่อยของพวกเขาแสดงให้เห็นว่าพวกเขาใช้ GCM ตรวจสอบคำตอบว่า "ข้อความยังใช้เวลานานเกินไปในการเข้าถึงโทรศัพท์ของคุณหรือไม่"


คุณพูดถูกว่าคำถามที่พบบ่อยแสดงให้เห็นว่า แต่เมื่อ Trebor Rude ชี้ให้เห็นว่าแอปไม่มีสิทธิ์ที่จำเป็นดังนั้นจึงไม่สามารถใช้ GCM ได้
Dan Hulme

2
มันมีสิทธิ์ที่จำเป็น มันระบุว่าเป็น "รับข้อมูลจากอินเทอร์เน็ต" ใน Play Store ดูandroid.stackexchange.com/a/61794
nyuszika7h

2
จากสิ่งที่ฉันเห็นพวกเขาใช้ GCM ถ้ามี หากไม่สามารถใช้งานได้ด้วยเหตุผลบางประการ (เช่นในอุปกรณ์ที่ไม่มีบริการ Play หรือหากกรองโดยเครือข่าย) ซ็อกเก็ตจะถูกเก็บไว้โดยไม่มีกำหนด
lxgr

0

Whatsapp เหมือนกับแอปอื่น ๆ ทำงานเป็นบริการ (คุณเชื่อมต่ออยู่เสมอ) ข้อความที่ส่งถึงคุณจะถูกเก็บไว้ในเซิร์ฟเวอร์ whatsapp จนถึง 30 วันภายในระยะเวลาที่ whatsapp ของคุณควรใช้งานเพื่อรับและตอบรับข้อความ บัญชีส่วนบุคคลจะถูกจัดเก็บด้วยหมายเลขโทรศัพท์ของผู้ใช้ @ whatsapp.net


1
30 วัน โปรดเชื่อมโยงแหล่งที่มาสำหรับข้อเท็จจริงนั้น
beeshyams

0

ฉันคิดว่ามันควรจะเป็นเช่นนี้:

เมื่อ whatsapp ใหม่มันจะใช้วิธีการแก้ปัญหาแบบ PNS, PNS นี้เพิ่งจะปลุกอุปกรณ์และเมื่อมันตื่นขึ้นมาก็สามารถสร้างการเชื่อมต่อซ็อกเก็ตกับเซิร์ฟเวอร์ whatsapp

หลังจากที่เมื่อ whatsapp ได้รับความนิยมในขณะนี้อุปกรณ์ส่วนใหญ่จะมาเป็นแอปพลิเคชันดั้งเดิมและแอปพลิเคชันเนทีฟจะไม่ถูกฆ่า ใน samsung s8 ของฉันฉันไม่สามารถถอนการติดตั้ง whatsapp ได้โหมดประหยัดพลังงานไม่สามารถฆ่าได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.