Whatsapp Yapısı (Programlama)
-
Mürit ve Mürideler merhaba ,
Öncelikle aklıma takılan bir soru var . Soru şu şekilde..
Whatsapp da mesela bir Mesaj gönderdik ve internetimiz yok..
Mesajı ben gönderdim internetim yokken ve telefonu kapattım komple.
Telefonu tekrar açtım internetimi açtığım anda bütün mesajlar gönderiliyor karşı tarafa...
Aklıma takılan sorun şu.
Tamam mesajı gönderdik Android den Server'a bir paket gönderdik (Mesaj) Paket gönderilemedi. Oncelikle Server tarafında bu gönderilen mesajın alınıp alınmadığı ile ilgili bir cevap dönmesi gerekiyor client'a.
Ben mesajı gönderdim mesela Server bu mesajı aldı , daha sonra aldığına dair client'a mesaj gönderdi.. Tam burda benim internetim kopsa bile mesajı alamıyorum normalde çünkü askıda kaldı mesaj...
Her neyse. GCM mantığı ile internet geldiği anda push notification gönderip ordan alınabilir mesaj tekrar fakat...
Mesajı ben gönderdim telefonumu kapattım açtım ama arka planda çalışan bir servis bu gönderilemeyen mesajları bir anda gönderiyor.. Internetim açıldığı anda..
Bir yayınalıcısı yazsak bununla birlikte internetin değişme anında işlem yapsak ne kadar sağlıklı olabilir ki.. Sonuçta arka planda sürekli internet sorgulanıyor....
Telefon açıldığı anda nasıl oluyor da internet kontrol edilip mesaj gönderiliyor hemen...
Servis yazıp arka planda sürekli bir biçimde kontrol mü ediliyor acaba kaynaktan (Sqlite vs.) bu konuda araştırması olan var mıdır ? Mantığı nedir veya ne olabilir sizce ?
EDİT: Bu özellik sadece Whatsapp da var Twitter , Instagram , Snapchat vs hiçbirinde yok.
-
Bu kadar merak etsem whatsapp in kodlarini reverse uygulardim. Uzaktan gorunen internet baglantisi koptugunda bir event fire olur (olmadi connection timeout oldugunda) mesaj gonderiliyorsa mesaji offline olasi storagelarda saklar. Internet geldiginde gonderilme olayi da program active oldugunda offline storage'a bakar kayit varsa isleme alir.
-
override bunu yazdı
Bu kadar merak etsem whatsapp in kodlarini reverse uygulardim. Uzaktan gorunen internet baglantisi koptugunda bir event fire olur (olmadi connection timeout oldugunda) mesaj gonderiliyorsa mesaji offline olasi storagelarda saklar. Internet geldiginde gonderilme olayi da program active oldugunda offline storage'a bakar kayit varsa isleme alir.
Internetin açılıp kapanma anını service ile yapılabilinir ama..
Messaj'ın basıldığı anda internetin olmama olayları biraz enteresan ve düşündürücü.. Yani WP de veri kaybı olmuyor hiçbir şekilde ama diğer platforlarda (Facebook,twitter,snapchat vs.) bu var yani internetin olmama durumu bu kadar hassas değil..
Arkadaki yapıyı merak etmiyor değilim açıkcası.. :)
Benim de aklıma senin dediğin gibi birşey geliyor ama connection timeout durumu sıkıntılı bir durum.. Çünkü server ile arandaki bağ kopuyor kopup kopmadığını da bilmen gerekiyor..
Timeout'a direk düştüğü anda depolamıyor mesajı biyerlerde gene bekletiyor ama telefon kapandığı anda telefonda saklıyor mesajı whatsapp fakat twitter vs bunu yapmıyor veya yapmamış bilmiyorum.. Telefon kapandığında mesaj askıda kalıyor..
-
hocam tamamiyle uydurarak yazıyorum sqlite kaydediyordur tum mesajları internet olup olmadığına bakmaksızın serverdan cevap dönerse siliyordur veya göndermemesi için işlem ypaıyordur kalanları yolluyordur
-
Bence sqlite da depoluyordur iletilmeyen mesajı internet gelince direk bir check yapıyordur o sqlite da gitmemiş mesaj var mı diye.Eğer varsa onu internet olunca yolluyordur.
Twitte,facede falan olmamasının sebebide bence tercih meselesidir.Çünkü mesela mesaj silme özelliği yok facede falan adam farzet atıyor 3G kullanırken mesajın iletilme hızı 2 saniye falan sonra ya işte yanlış kişiye attığını farkediyor direk interneti kapatıp mesaj karşıya ulaşmasın falan isteyebiliyor.
Zamanında Nokia 3310 lardan yanlış kişiye mesaj yollayınca o mektubun uçup giderken engelleye çalışmamız gibi düşün.Telefonu falan kapatmaya çalışıyorduk yanlış kişiye yolladığımızı farkedince :)
Kullanıcılardan bu şekilde tepkiler aldılarsa kullanmıyor olabilirler.Sonuçda bu sitelerin çoğu feedbacklere göre bir politika izliyorlar.
-
Bence belirli aralıklarla sürekli paket göndermeye çalışıyordur internet olmasa bile db deki verileri sürekli basmayı dener hatta gönderse bile veri kaybı olmaması adına aynı veriyi bi daha gönderip doğrulama yapıyor olabilir
-
hocam bildiğim kadarıyla cep telefonları 4 saniyede bir (süreden tam emin değilim ama çok kısa olduğunu biliyorum) sinyal gönderip alıyor.
tamamen fikir yürütüyorum;
sonuç olarak internet dediğimiz olay da yine telefon hattı üzerinden olduğu için, olay bir noktada telefon hattının erişimine kalıyor olabilir?
yani internetin kopsa bile bazı işlemler telefon hattın üzerinden yapılıyor olabilir.
ayrıca şöyle bir olay da var, bu da benim kafamı kurcalıyor; telefonun hiç çekmediği, sinyal yok gösterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve görüşmeyi yapabilirsin.
bunun tarzında bişiler olabilir.
-
LynXMaSTeR bunu yazdı
ayrıca şöyle bir olay da var, bu da benim kafamı kurcalıyor; telefonun hiç çekmediği, sinyal yok gösterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve görüşmeyi yapabilirsin.
bunun tarzında bişiler olabilir.
Telefonun çekmeme durumu operatör ile alakalı. Bu tip numaralar aranmak istendiğinde bütün operatörlerin bütün kapsama alanları kullanılabiliyor diye düşünüyorum. :/
Harbi bu durumu açıklayabilecek var mı?
-
Hocam Hollywood Principle https://en.wikipedia.org/wiki/Inversion_of_control mevzusuna bak, androidte işler genel olarak bunun üzerinden yürür. Sisteme abone olmak gibi birşey programların yaptığı, abone oluyorsun ve internet gelince bana haber ver diyorsun arkada android internetin geldiğini yakaladığı zaman abonelerin hepsine haber veriyor.
-
-
Th3Ultra bunu yazdıLynXMaSTeR bunu yazdı
ayrıca şöyle bir olay da var, bu da benim kafamı kurcalıyor; telefonun hiç çekmediği, sinyal yok gösterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve görüşmeyi yapabilirsin.
bunun tarzında bişiler olabilir.
Telefonun çekmeme durumu operatör ile alakalı. Bu tip numaralar aranmak istendiğinde bütün operatörlerin bütün kapsama alanları kullanılabiliyor diye düşünüyorum. :/
Harbi bu durumu açıklayabilecek var mı?
hocam hiçbir telefon hattının çekmediği bir alandan bahsetmiştim.
mesela bodrum kat bi yere gir, şu anda mevcut 3 farklı gsm hattını da al, hiçbirinin çekmedi o yerde 112 yi arama hepsinden arama gerçekleşiyor.