Bu kadar merak etsem whatsapp in kodlarini reverse uygulardim. Uzaktan gorunen internet baglantisi koptugunda bir event fire olur mesaj gonderiliyorsa mesaji offline olasi storagelarda saklar. Internet geldiginde gonderilme olayi da program active oldugunda offline storage'a bakar kayit varsa isleme alir. gl

NmC aslinda yazmis olayi ama gereksiz o kadar ivir zivir bilgi arasinda dogru cevap kaybolmus :) Bu tarz sistemlerde subscribe ve unsubscribe olayi var. Sistem login olduktan sonra belli hizmetlere kendini subscribe eder. Arkaplanda bir listener calisir. Server da bir degisiklik oldugunda server kendi dinleyicilerine bu mesaji yollar. Her client'in bir uniqueID si oldugu icin güvenlik acisindan bu mesaj tüm dinleyicilere degil de eslesen client'a yollanir. Mesaji parametre olarak alan client da size gsterir. Eger internet yoksa serverin iki de bir denemesi sacma olur. O sebeple, telefon internete baglandiginda sisteme tekrar kendini subscribe eder . Bu sayede sistem gnderilmemis mesajlari kontrol eder ve tekrar ilgili client'a mesajlarini yollar. Milyarlarca mesaj oldugunu dusunursek, bir arkadasin dedigi gibi sqlite kullanilmasi cok mantiksiz olur. Cünkü sqlite da bir rdbms dir. Bu yüzden bu tarz sistemler bu verilerini noSql cozumlerinde tutuyordur. CAP teorimine gre hangisi uygunsa, ona gore bir noSQL cozumu secmislerdir ya da kendilerinin gelistirdigi bir cozum vardir . Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

dhmm, yok abi kendi socketleri var XMPP neden kullansınlar? Araştırmalarıma gre edindiğim sonuçlar BtnMesajGonder. setOnClickListener(new View. OnClickListener { @Override public void onClick { if else } }); public class NetworkStateReceiver extends BroadcastReceiver { public void onReceive { if(intent. getExtras !=null) { //Internet'in Değişme anı NetworkInfo MyConnection = intent. getExtras . get ; if(MyConnection. getState NetworkInfo. State. CONNECTED && MyConnection!=null) { ArrayList Messages =Database. GetInActiveMessages ; for }else } } } Umarım yararlı olur sizin için... Topladığım veriler bu şekilde oldu. Adamlar byle bir mantık kurmuşlar Whatsapp da çalışan biri https://www.quora.com/How-does-messaging-work-in-WhatsApp byle şeyler demiş... MhmdAlmz tarafından 10/Tem/17 11:39 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Mürit ve Mürideler merhaba, ncelikle aklıma takılan bir soru var. Soru şu şekilde.. Whatsapp da mesela bir Mesaj gnderdik ve internetimiz yok.. Mesajı ben gnderdim internetim yokken ve telefonu kapattım komple. Telefonu tekrar açtım internetimi açtığım anda bütün mesajlar gnderiliyor karşı tarafa... Aklıma takılan sorun şu. Tamam mesajı gnderdik Android den Server'a bir paket gnderdik Paket gnderilemedi. Oncelikle Server tarafında bu gnderilen mesajın alınıp alınmadığı ile ilgili bir cevap dnmesi gerekiyor client'a. Ben mesajı gnderdim mesela Server bu mesajı aldı, daha sonra aldığına dair client'a mesaj gnderdi.. 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 gnderip ordan alınabilir mesaj tekrar fakat... Mesajı ben gnderdim telefonumu kapattım açtım ama arka planda çalışan bir servis bu gnderilemeyen mesajları bir anda gnderiyor.. 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 gnderiliyor hemen... Servis yazıp arka planda sürekli bir biçimde kontrol mü ediliyor acaba kaynaktan 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. MhmdAlmz tarafından 09/Tem/17 23:41 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

hocam bildiğim kadarıyla cep telefonları 4 saniyede bir sinyal gnderip 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 gsterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve grüşmeyi yapabilirsin. bunun tarzında bişiler olabilir. goo. gl/qBNZmW

Bence belirli aralıklarla sürekli paket gndermeye çalışıyordur internet olmasa bile db deki verileri sürekli basmayı dener hatta gnderse bile veri kaybı olmaması adına aynı veriyi bi daha gnderip doğrulama yapıyor olabilir

NmC aslinda yazmis olayi ama gereksiz o kadar ivir zivir bilgi arasinda dogru cevap kaybolmus :) Bu tarz sistemlerde subscribe ve unsubscribe olayi var. Sistem login olduktan sonra belli hizmetlere kendini subscribe eder. Arkaplanda bir listener calisir. Server da bir degisiklik oldugunda server kendi dinleyicilerine bu mesaji yollar. Her client'in bir uniqueID si oldugu icin güvenlik acisindan bu mesaj tüm dinleyicilere degil de eslesen client'a yollanir. Mesaji parametre olarak alan client da size gsterir. Eger internet yoksa serverin iki de bir denemesi sacma olur. O sebeple, telefon internete baglandiginda sisteme tekrar kendini subscribe eder . Bu sayede sistem gnderilmemis mesajlari kontrol eder ve tekrar ilgili client'a mesajlarini yollar. Milyarlarca mesaj oldugunu dusunursek, bir arkadasin dedigi gibi sqlite kullanilmasi cok mantiksiz olur. Cünkü sqlite da bir rdbms dir. Bu yüzden bu tarz sistemler bu verilerini noSql cozumlerinde tutuyordur. CAP teorimine gre hangisi uygunsa, ona gore bir noSQL cozumu secmislerdir ya da kendilerinin gelistirdigi bir cozum vardir . Aynen abi Client bağlandığı anda kendini kayıt ettiriyor server'a daha sonra sürekli olarak server'a ping atıyor. Bağlandıktan sonra. Server'da son ping atılan tarihi alıyor saklıyor. X Client Y Client'a X client ne zaman ping attı dediğinde son ping tarihini alıyor ve X client'a gnderiyor. Ping pong olayı işte. Peer to peer zaten bağlantılar da. SSH, hocam sorun da o ya zaten. Mesajın iletilip iletilmediğini kontrol etmek için bir algoritmaya ihtiyaç var. Yani Client Server'a mesajı gnderdi ama Server'a bu mesajın ulaşıp ulaşılmadığı da kontrol edilmeli. Client da zaten internet yoksa server'a veri gnderemez. Sürekli bir biçimde de gnderilen verileri server'a bak sen bu paketi almış mıydın diye sorulmaz. Sonuçta çok fazla data var sorgulanacak her seferinde hepsini sorgulamaya ne gerek var... Burdaki tek sıkıntı iletilmeyen paketleri tespit etmek. Tespit edildikten sonra zaten NmC hocamın da dediği gibi yayın alıcısı ile sistem'e emir verilebilir bağlantı geldiğinde veriyi şutla. gibi... EDİT Çzümü buldum hocalar. @Unbalanced ve @NmC hocamın dediği gibi yaptım.. Socket e bir timeout verdim 5 saniyelik bir timeout.. Ping süresini de 3 saniye yaptım.. onPing eventine yanıt olarak Pong eventine şu userid de gnderdim.. Server side tarafında pong olduğu durumda son pong süresini değişkene atadım.. Client tarafında internetin açılıp kapanma durumunda socket. disconnect socket. connect methodlarını calıstırdım... Mesaj gnder buttonuna basıldığında if altına eğer bağlantı varsa socketten veriyi gnder yoksa hafızaya al dedim Yayın alıcısı içerisine de yazdığım koda Sqllite de isConnected false sonucunda oluşan datayı socketten tekrar gnderdim... Yayın alıcısı durumunu aktif hale getirdiğinde Sqllite sorgulanıyor. Eğer data varsa tekrar gnderiliyor.. Bu sayede veri kaybı olmadı telefonu açtım kapattım herşeyi denedim bir sorun teşkil etmedi.. Batarya konusunda ise de pek de birşey olacağını düşünmüyorum. Çünkü Ping ve pong olayları bataryayı su gibi içmiyor. Bu yaptığımız olaya heartbeat deniyor. Heartbeat Interface cluster yapılarda cluster yapısının sağlığı için oluşturulan network sistemiymiş. Server Client'a 0.4 veya 0.5 sn de bir pingler ve eğer 10 a sağlıklı bir cevap vermezse bağlantıyı diğer kanallara iletiyor. Bizde burda 10 ping sağlanmazsa bağlantıyı keserek bu client'in artık ldüğünü varsayıyoruz ve yeni bir bağlantı açmasını istiyoruz.. Bu durumda zaten Android tarfında intenretin kesildiğinden tekrar bir bağlantı gerçekleştiriyoruz.. Ek olarak Telefon açıldığı anda Internet bağlantısı sistem tarafından tetiklendiği için yazdığımız yayın alıcısı da tetikleniyor ve socket'e bağlantı gerçekleşiyor. Tam bu sırada da gnderilmeyen paketleri Şutluyoruz... Bu sayede Kardeş internetin yoksa ben dosyalarını yedeklerim diyoruz.. Eski mesajları saklamak için de client'a bir sqlite yazabilirsiniz ki zaten bu kullanıcıya kalmış mesajları saklamak isterse kendi telefonundan ferakat edecek.. Server tarafında mongodb tercih edilebilir çünkü @unbalanced hocamın dediği gibi çok fazla mesaj var ve bunların cevap süreleri çok nemli olaylar çok kısa sürede gerçekleşiyor.. Bu yapıyı Github'a aktaracağım güzel bir uygulama ile.. Sağlıcakla. Uzun uğraş ve araştırma sonucu çzdük olayı :) MhmdAlmz tarafından 10/Tem/17 14:23 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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. There are 10 types of people in the world. Those who knows binary and those who dont...

muhtemel sqllite tarafında durum tutuyor gnderemediğini bağlantı gelince tekrar gnderiyor sırıtma la.

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 gre bir politika izliyorlar.

LynXMaSTeR bunu yazdı ayrıca şyle bir olay da var, bu da benim kafamı kurcalıyor; telefonun hiç çekmediği, sinyal yok gsterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve grüşmeyi yapabilirsin. bunun tarzında bişiler olabilir. Telefonun çekmeme durumu operatr ile alakalı. Bu tip numaralar aranmak istendiğinde bütün operatrlerin 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. goo. gl/qBNZmW

XMPP protokolunu kullaniyorlar. https://en. wikipedia. org/wiki/XMPP Buna bir goz at https://prezi.com/kyedm23ogsmp/a-technical-structure-of-whatsapp/ Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

hocam tamamiyle uydurarak yazıyorum sqlite kaydediyordur tum mesajları internet olup olmadığına bakmaksızın serverdan cevap dnerse siliyordur veya gndermemesi için işlem ypaıyordur kalanları yolluyordur I am Jack's inflamed sense of rejection

Dayı whatsapp'sın ameko, android'e ios'a mesajlarımı kontrol et lan diceksin edicek. seni 4 kere dverim yarın

ayrıca şyle bir olay da var, bu da benim kafamı kurcalıyor; telefonun hiç çekmediği, sinyal yok gsterdiği bir alanda 112 yi aramak istediğinde rahatça arar ve grüşmeyi yapabilirsin. bunun tarzında bişiler olabilir. Telefonun çekmeme durumu operatr ile alakalı. Bu tip numaralar aranmak istendiğinde bütün operatrlerin bütün kapsama alanları kullanılabiliyor diye düşünüyorum. :/ Harbi bu durumu açıklayabilecek var mı? Amacımız; zengin olmak. Zengin grünmek değil.

Bu kadar merak etsem whatsapp in kodlarini reverse uygulardim. Uzaktan gorunen internet baglantisi koptugunda bir event fire olur 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 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.. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!