WhatsApp soket kullanıyor mu
WhatsApp’ın Mimarlık ve Sistem Tasarımını Anlama
Özet
WhatsApp’ın uçtan uca şifrelemesi, teorik güvenliğine rağmen, umutluluğu kadar gizlilik koruyucu olmayabilir. Bu makale, WhatsApp’ın mimarisini ve sistem tasarımını araştırıyor ve iç çalışmalarına ışık tutuyor.
Anahtar noktaları
1. Roxdavirox/Socket-Whatsapp: Bu taahhüt, bu depodaki herhangi bir şubeye ait değildir ve deponun dışındaki bir çataldan olabilir.
2. Zaten kullanımda olan isim: Zaten bir etiket olarak var olan bir ada sahip bir şube oluşturmak, beklenmedik davranışlara yol açabilir. Kullanıcıdan şubenin oluşturulmasını onaylaması istenir.
3. Github masaüstünü başlatma: Hiçbir şey olmazsa, kullanıcının Github masaüstünü indirmesi ve tekrar denemeniz tavsiye edilir.
4. Xcode’u başlatma: Hiçbir şey olmazsa, kullanıcının Xcode’u indirmesi ve tekrar denemeniz tavsiye edilir.
5. Visual Studio Kodunu Başlatma: Kullanıcı, kod alanlarının hazır olduğunda açılacağı konusunda bilgilendirilir. Kod alanını hazırlarken bir sorun varsa, tekrar denemeleri teşvik edilir.
6. Son Taahhüt: Depoya yapılan en son taahhütün ayrıntıları görüntülenir.
7. Git İstatistikleri: Depo için GIT istatistiklerine genel bir bakış sunulmaktadır.
8. Dosyalar: En son taahhüt bilgilerinin yüklenmemesi de dahil olmak üzere depodaki dosyalar hakkında bilgi gösterilmiştir.
9. Okuma.MD: Saf bir düğüm olan Baileys kütüphanesinin kısa bir açıklaması.Selenium veya başka bir tarayıcıya ihtiyaç duymadan WhatsApp Web API’sının JS uygulaması. WhatsApp Web ile arabirim kurmak için doğrudan WebSocket kullanır.
10. Baileys kullanımı: Baileys’in NPM’den nasıl yükleneceğine ve koda aktaracağına dair talimatlar verilir.
Sorular ve cevaplar:
1. Roxdavirox/Socket-Whatsapp taahhütünün amacı nedir?
Bu taahhütün amacı, depodaki herhangi bir şubeye ait olmadığı ve deponun dışındaki bir çataldan olabileceğinden belirsizdir.
2. Zaten etiket olarak var olan bir ada sahip bir şube oluştururken hangi potansiyel sorun ortaya çıkabilir??
Zaten etiket olarak var olan bir ada sahip bir şube oluşturmak beklenmedik davranışlara neden olabilir. Böyle bir şube oluşturmadan önce onaylanması tavsiye edilir.
3. Github masaüstünü başlatırken hiçbir şey olmazsa ne yapmalı?
Github masaüstünü başlatırken hiçbir şey olmazsa, indirmeniz ve tekrar denemeniz önerilir.
4. Xcode’u başlatırken hiçbir şey olmazsa ne yapılmalı?
Xcode’u başlatırken hiçbir şey olmazsa, indirmek ve tekrar denemek önerilir.
5. Visual Studio Kodunu başlatırken kod alanını hazırlarken bir sorun varsa hangi işlem yapılmalıdır??
Visual Studio kodunu başlatırken kod alanını hazırlayan bir sorun varsa, tekrar denemek en iyisidir.
6. “En son taahhüt” bölümü hangi bilgileri sağlar??
“En son taahhüt” bölümü, depoya yapılan en son taahhütün ayrıntılarını gösterir.
7. “Git istatistikleri” bölümü ne gösteriyor?
“Git İstatistikler” bölümü, depo için git istatistiklerine genel bir bakış sağlar.
8. “Dosyalar” bölümünde hangi bilgiler sunulur??
“Dosyalar” bölümü, en son taahhüt bilgilerini yüklemek için herhangi bir başarısızlık da dahil olmak üzere depodaki dosyalar hakkında bilgi gösterir.
9. Baileys nedir?
Baileys saf bir düğümdür.Whatsapp Web API’sının JS uygulaması. Selenium gibi bir tarayıcıya ihtiyaç duymadan bir WebSocket kullanarak WhatsApp Web ile doğrudan iletişime izin verir.
10. Baileys nasıl kurulabilir ve içe aktarılabilir?
Baileys, “NPM Install Github: Adiwajshing/Baileys komutu kullanılarak NPM’den yüklenebilir.”Daha sonra” const whatsappweb = requir (‘Baileys’) kullanılarak koda aktarılabilir.”
Kişisel deneyim ve öneriler:
Kişisel deneyimlerime göre, WhatsApp’ın mimarisini ve sistem tasarımını anlamak, platformla entegre olan uygulamalar geliştirmede çok önemlidir. Baileys, saf bir düğüm olmak.JS uygulaması, Selenyum gibi tarayıcı otomasyon araçlarına ihtiyaç duymadan WhatsApp Web ile etkileşim kurmayı çok daha kolay hale getirdi. WhatsApp’ın altyapısının üstünde uygulama oluşturmak isteyen herkes için bu tür kütüphanelerden yararlanmanızı şiddetle tavsiye ederim.
WhatsApp’ın Mimarlık ve Sistem Tasarımını Anlamak
Uçtan uca şifreleme teoride güvende hissetmenizi sağlayabilir. Uygulamada, uçtan uca şifreleme’t umarım gizliliği korumak.
Roxdavirox/Socket-Whatsapp
Bu taahhüt, bu depodaki herhangi bir şubeye ait değildir ve deponun dışındaki bir çatala ait olabilir.
Şubeleri/etiketleri değiştirin
Şubeler Etiketleri
Şubeleri yükleyemedi
Gösterilecek bir şey yok
Etiketleri yükleyemedi
Gösterilecek bir şey yok
Zaten kullanımda olan isim
Sağlanan dal adı ile zaten bir etiket var. Birçok git komutu hem etiket hem de şube adlarını kabul eder, bu nedenle bu dalın oluşturulması beklenmedik davranışlara neden olabilir. Bu şubeyi oluşturmak istediğinden emin misin?
Create’i iptal et
- Yerel
- Kodlama
Https github cli
Web URL’sini kullanarak GIT veya SVN ile ödeme kullanın.
Resmi CLI’mizle hızlı çalışın. CLI hakkında daha fazla bilgi edinin.
Gereksiz giriş
Kod bölgelerini kullanmak için lütfen oturum açın.
Github masaüstünü başlatma
Hiçbir şey olmazsa, Github masaüstünü indirin ve tekrar deneyin.
Github masaüstünü başlatma
Hiçbir şey olmazsa, Github masaüstünü indirin ve tekrar deneyin.
Xcode’u başlatma
Hiçbir şey olmazsa, xcode’u indirin ve tekrar deneyin.
Visual Studio Kodunu Başlatma
Kod alanınız hazır bir kez açılacak.
Kod alanınızı hazırlarken bir sorun vardı, lütfen tekrar deneyin.
Son taahhüt
Git İstatistikleri
Dosyalar
En son taahhüt bilgilerini yükleyemedi.
En son taahhüt mesajı
Zaman
Okuma.MD
Saf düğümde tersine tasarlanmış WhatsApp Web API.JS. Baileys, selenyum veya başka bir tarayıcının WhatsApp Web ile arayüzlemesini gerektirmez, bunu doğrudan bir WebSocket kullanarak yapar.
Tersine Mühendislik WhatsApp Web Kılavuzunu yazdığınız için Sigalor’a teşekkür ederiz ve Gitmek yeniden uygulama.
Baileys kullanımı çok kolay:
- NPM’yi kullanarak NPM’den yükleme Github: Adiwajshing/Baileys
- Ardından, kodunuzu kullanarak içe aktarın
const Whatsappweb = gerekmek('Baileys')
izin vermek müşteri = yeni Whatsappweb() müşteri.bağlamak()
müşteri.işleyiciler.bağdaşmış = () => / * WhatsApp web sunucuları ile başarıyla doğrulandığınızda */ >
müşteri.işleyiciler.onunReadMessage = (İleti) => / * Bekleyen okunmamış bir mesajınız olduğunda veya yeni bir mesaj aldığınızda arandı */ >
müşteri.işleyiciler.onerror = (hata) => / * Bir hata olduğunda arandı */ >
müşteri.işleyiciler.varlıklı = (İD, mevcudiyet) => / * Birinin varlığıyla ilgili bir güncelleme aldığınızda aradı */ >
müşteri.işleyiciler.Ondisconnect = () => / * İnternet bağlantısı kesildiğinde aranan */ >
müşteri.işleyiciler.onunReadMessage = (M) => const mesaj tipi = müşteri.getMessagetype(M.İleti) // Ne tür bir mesaj alın - metin, resim, video >
müşteri.işleyiciler.onunReadMessage = (M) => const mesaj tipi = müşteri.getMessagetype(M.İleti) // Ne tür bir mesaj alın - metin, resim, video // mesaj bir kısa mesaj değilse eğer (mesaj tipi !== Whatsappweb.Mesaj tipi.metin && mesaj tipi !== Whatsappweb.Mesaj tipi.genişletilmiş metin) müşteri.DecoDemEdiamessage(M.İleti, "dosya adı") // Uzatma otomatik olarak uygulanır .Daha sonra (meta => konsol.kayıt(M.anahtar.remote jid + "Medya gönderildi, kaydedildi:" + meta.dosya adı)) .yakalamak (erteleme => konsol.kayıt("Kod çözmede hata:" + erteleme)) > >
müşteri.sendtextMessage(İD, txtMessage)
Veya başka bir mesaj alıntılamak istiyorsanız:
müşteri.sendtextMessage(İD, txtMessage, quotedMessage)
müşteri.sendmediamessage(İD, mediebuffer, ortam türü, bilgi)
- Küçük resimler görüntüler ve çıkartmalar için otomatik olarak oluşturulabilir.
- MediAbuffer sadece göndermek istediğiniz medyanın içeriğini içeren bir tampondur
- Mediatype, gönderdiğiniz mesajın türünü temsil eder. Bu aşağıdakilerden biri olabilir:
[ Whatsappweb.Mesaj tipi.imaj, // bir resim mesajı Whatsappweb.Mesaj tipi.video, // bir video mesajı Whatsappweb.Mesaj tipi.ses, // bir ses mesajı Whatsappweb.Mesaj tipi.etiket // bir çıkartma mesajı ]
bilgi = altyazı: "Selamlar!", // medya ile gönderilecek başlık (çıkartmalarla gönderilemez) küçük resim: hükümsüz, /* Özel bir başparmak göndermek istiyorsanız, bir temel 64 kodlanmış jpeg olmalı, veya bir küçük resim göndermek istemiyorsanız null olarak ayarlayın. Otomatik olarak bir başparmak oluşturmak istiyorsanız bu alana girmeyin */ taklit etmek: "Uygulama/PDF", /* Medya türünü belirtin (belgeler hariç tüm medya türleri için isteğe bağlı), PDF dosyaları için => "Uygulama/PDF" olarak ayarlayın, TXT dosyaları için => "Uygulama/TXT" olarak ayarlayın vesaire. */ gif: doğru // Video GIF olarak ele alınması gerekiyorsa, yalnızca video mesajları için geçerlidir >
müşteri.sendreadreceipt(İD, Mesaj Kimliği)
müşteri.UpdatePresence(İD, mevcudiyet)
Bu, kimliği olan kişinin durumunuzu bilmesini sağlar. Varlığın aşağıdakilerden biri olabileceği yerler:
statik Mevcudiyet = mevcut: "mevcut", // "çevrimiçi" kullanım dışı: "kullanım dışı", // Çevrimdışı beste yapmak: "beste yapmak", // "yazıyor. " kayıt: "kayıt", // "kayıt. " durak: "durakladı" // Hiçbir fikrim yok >
const Authjson = müşteri.Base64EncodedAuthinfo()
const Authjson = JSON.ayrıştırmak( fs.Readfilesync("Auth_info.JSON ") ) müşteri.giriş yapmak(Authjson)
müşteri.Isonwhatsapp ("[CountryCode] [Some10DigitNumber] @s.Naber.açık") .Daha sonra ((var olan, İD) => eğer (var olan) konsol.kayıt(İD + "Whatsapp'ta") > başka konsol.kayıt(İD + "WhatsApp'ta değil :(") > >)
Kontrol et ve çalıştırın örneği.JS Tüm bu işlevlerin örnek kullanımını görmek. Örnek komut dosyasını çalıştırmak için repoyu indirin veya klonlayın ve ardından terminalde aşağıdakileri yazın:
- CD Yolu/TO/Baileys/Örnek
- Düğüm Örneği.JS
Ben hiçbir şekilde whatsapp’a bağlı değilim. Bu eğitim amaçlı yazılmıştır. Kendi takdirinize bağlı olarak kullanın.
WhatsApp’ın Mimarlık ve Sistem Tasarımını Anlama
Whatsapp’ın nasıl çalıştığını hiç merak ettin mi? Biz’VE, WhatsApp’ın üst düzey sistem tasarımını ve mimarisini inceledi’S Technology. Ne öğrendiğimizi görmek için dalın.
İçerik Türü Etiketi
İçindekiler
Hangi uygulamanın 2’den fazla.5 milyar aktif kullanıcı, 5 milyardan fazla indirme ve 100’den fazla ülkede en popüler uygulamadır?
İpucu: Makale başlığını kontrol edin.
Evet bu’sağ. WhatsApp dünyanın en popüler mesajlaşma hizmetidir. Mark Zuckerberg’e göre, WhatsApp üzerinden her gün 100 milyardan fazla mesaj gönderildi.
Bu kadar neredeyse astronomik trafikle,’t Yardım ama WhatsApp’ın nasıl çalıştığını merak ediyorum – sistem tasarımı, sunucu mimarisi, teknoloji . Bu kadar çok eşzamanlı kullanıcıyı ve mesajı nasıl ele alıyor?? Ne tür çerçeveler ve programlama dilleri bu tür bir ölçek sağlar? Tüm bu verileri nasıl güvenli tutarlar? Çok fazla soru!
Bu makalede, WhatsApp’a derin bir dalış yapacağız’s mimari ve sistem tasarımı. Biz’Yukarıda belirtilen tüm soruları ve daha fazlasını cevaplayacak.
Eğer sen’Sohbet uygulaması dünyasındaki en iyi köpeği hiç merak ettim, okumaya devam et.
Feragatname: WhatsApp Mimarlık Tasarımındaki her kaynağı toplamak için interneti inceledik ve burada derledik ve özetledik. Bildiğimiz kadarıyla, bu bilgiler doğrudur. Ancak, şirketler teknoloji yığınlarını sık sık güncelledikçe, bu bilgiler değişebilir.
Whatsapp ön uç teknoloji yığını
İzin vermek’S Ön uçla başlayın ve arka uçtaki donanıma giderken çalışın.
Bir kullanıcının etkileşime girdiği WhatsApp sistem tasarımının ilk kısmı mobil veya web uygulamasıdır. WhatsApp neredeyse tüm platformları destekler. Bir iOS uygulaması, Android uygulaması, masaüstü uygulaması, web uygulaması ve Windows Phone uygulaması var. 2017 yılına kadar Whatsapp’ı BlackBerry’de bile kullanabilirsiniz.
Pek çok desteklenen platformla, WhatsApp’ın hibrit bir uygulama olacağını tahmin etmiş olabilirsiniz. Ama aslında,’değil. Aslında her platform için yerel bir uygulama oluşturdular. İşte her birini oluşturmak için kullanılan ön uç dil (ler) ile desteklenen tüm platformların bir listesi:
WhatsApp nasıl yerel olarak sohbet eder?
Programlama dilinin kendisine ek olarak, WhatsApp’ın ön uçta kullandığı bir diğer önemli teknoloji bir SQLite veritabanıdır. SQLite, uygulamalara gömülmesi gereken bağımsız, bağımsız, ilişkisel bir veritabanıdır-bu da cihazınızda yaşadığı anlamına gelir. WhatsApp konuşmaları saklamak için kullanır. Uygulamayı her açtığınızda buluttan tüm mesajları indirmek kaynak kaybı olacağından, WhatsApp mesajları yerel olarak saklamayı seçer. Aslında, WhatsApp mesajları yalnızca bu noktada alınana kadar saklarlar.
WhatsApp hangi mesajlaşma protokollerini kullanıyor?
WhatsApp, bir Ejabberd sunucusunda (daha sonra daha fazlası) XMPP’nin son derece değiştirilmiş bir sürümünü müşterilerle iletişim kurmak için kullanır.
İstemci üzerindeki XMPP, WhatsApp sunucularına bir SSL soketi açar. Mesajları almak için istemci açılana veya bu sokete yeniden bağlanana kadar gönderilen tüm mesajlar sunucularda sıraya alınır. Bir mesaj müşteri tarafından başarıyla alındığında, WhatsApp Server’a bir başarı durumu geri gönderilir. Sunucu daha sonra bu durumu orijinal gönderene iletir; Mesajın eklenerek alındığını bildirmek “onay işareti” Başarılı bir mesajın yanında simge.
XMPP, sohbet uygulamaları için en popüler mesajlaşma protokollerinden biri olsa da, bir mesajlaşma protokolünü seçmek için kesinlikle tek seçenek olmadığını unutmayın.
WhatsApp Şifreleme Teknolojisi
WhatsApp uçtan uca şifreleme kullanır. İdeal olarak, bu, yalnızca orijinal gönderen ve mesajın gerçek alıcısının mesajı düz metin halinde okuyabileceği anlamına gelir.
Bir mesaj gönderdiğinizde, belirli bir şifreleme protokolü kullanarak şifrelenir (daha fazlası daha fazlası). WhatsApp daha sonra bu şifreli mesajı sunucularında saklar’alıcıya teslim edilir. Teslimattan sonra, alıcının cihazı, mesajı benzersiz bir şifreleme anahtarı kullanarak okunabilir, düz metin bir mesajda yeniden çözer. Tüm bu süreç boyunca, WhatsApp mesajınızın içeriğini asla bilemez.
Naber’S şifreleme teknolojisine, açık sistem tarafından geliştirilen sinyal şifreleme protokolü denir.
Uçtan uca şifreleme teoride güvende hissetmenizi sağlayabilir. Uygulamada, uçtan uca şifreleme’t umarım gizliliği korumak.
Whatsapp arka uç teknoloji yığını
İzin vermek’s arka uç noktaya geç.
Bildiğimiz kadarıyla, mevcut WhatsApp arka uç sistem tasarımı şuna benziyor:
- Erlang ana programlama dilidir
- Freebsd işletim sistemi
- Ejabberd xmpp uygulama sunucusu
- Kiriş Erlang tabanlı sanal makine
- Minya Erlang tabanlı veritabanı
- Yaws onların multimedya web sunucusu
İzin vermek’w whatsapp’ın daha ilginç yönlerinden bazılarını keşfedin’S arka uç mimarisi:
Erlang
WhatsApp’ın programlama dili seçimi büyük ölçüde, bu kadar muazzam bir ölçekte çalışmasına izin veren şeydir.
Erlang, eşzamanlı, ölçeklenebilir ve güvenilir sistemler oluşturmaya yönelik fonksiyonel bir programlama dilidir. Süreç tabanlı bir model kullanıyor “aktör modeli” hangi küçük, izole süreçlerin mesajlar yoluyla birbirleriyle iletişim kurduğu. Bu süreçler yeni süreçler oluşturabilir, mesaj gönderebilir ve mesaj almaya yanıt olarak durumlarını değiştirebilir.
Süreç tabanlı mülkü Erlang’a son derece yüksek eşzamanlılığını, ölçeklenebilirliğini ve güvenilirliğini verir.
Bu süreçler, üzerinde çalıştığı çekirdek dışındaki süreçlerle de iletişim kurabilir. Bu, sistemi yatay olarak (daha fazla makine ekleyerek) veya dikey olarak ölçeklendirmeyi kolaylaştırır (daha fazla çekirdek ekleyerek). Son olarak, süreçler birbirleriyle iletişim kurabildiğinden ve daha da önemlisi,’Kendini iyileştirme sistemleri oluşturulması kolay. Bir hata bir işlemi çökerse, başka bir işlem onu yeniden başlatabilir.
Freebsd
WhatsApp’ın kurucularının ilginç bir teknik seçimi, FreeBSD’yi daha yaygın olarak kullanılan bir sistem yerine bir işletim sistemi olarak seçiyordu (Linux gibi).
WhatsApp’ın kurucularından Brian Acton, Wired ile karar hakkında bir röportajda bunu söyledi:
“Linux bir karmaşıklık canavarıdır. FreeBSD, olağanüstü iyi bir bağlantı noktası koleksiyonu ile tek bir dağıtım olma avantajına sahiptir.”
Ayrıca, özellikle paket başına sistem yükü konusunda ham performans söz konusu olduğunda, başka hiçbir işletim sistemi Freebsd’yi yenemez.
Ancak, söz konusu olduğunda, freeBSD kullanmaya karar vermelerinin asıl nedeni muhtemelen her iki kurucu da Yahoo’da onunla çalışma konusunda uzun bir geçmişe sahip olmalarıdır!.
Ejabberd
Ejabberd, Erlang’da yazılmış açık kaynaklı bir XMPP sunucusudur. WhatsApp, mesaj teslimatını işlemek için protokolü olarak XMPP’nin değiştirilmiş bir sürümünü kullanır. WhatsApp’ın kullandığı Ejabberd sunucusu bile, sunucu performansı için optimize etmek için büyük ölçüde özelleştirildi.
Ne’Ejabberd’in amacı?
Uygulamanın mesaj yönlendirmesi, teslim edilebilirliği ve genel anlık mesajlaşma yönlerini işler. Ejabberd’in özellikleri şunları içerir:
- Bire bir mesajlaşma
- Grup sohbeti
- Çevrimdışı mesajları depolama ve iletme
- İletişim listesi ve varlığı
Minya
Veri ve geçici mesajları depolamak için WhatsApp. Bu DBMS, birçok geleneksel veritabanının’t gibi:
- Gerçek Zamanlı Anahtar/Değer Arama
- Yüksek Arıza Toleransı
- Dinamik yeniden yapılandırma
- Karmaşık nesneler
Mnesi de tek DBM’lerdir’Erlang’da yazılmış. Bu kendi başına bir faydadır çünkü DBMS’de Erlang ile Erlang arasında veri yapısı farkı yoktur. Bu nedenle kodlama daha hızlı ve daha açıktır.
Kiriş
Işın, kısa “Bogdan’S erlang soyut makinesi”, Erlang kaynak kodunu derleyen ve yürüten sanal bir makine. Işın, özellikle son derece eşzamanlı uygulamalar için tasarlanmıştır – WhatsApp için mükemmel’S kullanım durumu. Kiriş’S Gizli Sos, Don’lu Hafif Çapraz İşlemlerdir’t Bellek paylaşın ve zamanlayıcılar tarafından yönetiliyor. Bu zamanlayıcılar, birden fazla çekirdekte milyonlarca süreci yönetebilir. Bu, ışın yüksek trafik yükleri, sistem güncellemeleri ve ağ kesintilerinden kaynaklananlar gibi arızalara son derece ölçeklenebilir ve dirençli hale getirir.
Beam, WhatsApp Sistem Tasarımı için o kadar önemli ki, WhatsApp ekibinin temel kaynak koduna birçok yama ve düzeltme yayınladığı.
Sarsıntılar
Yaws (henüz başka bir web sunucusu), dinamik içerik için ideal olan Erlang tabanlı bir web sunucusudur. WhatsApp, multimedya verilerini depolamak için YAW’ları kullanır. Yaws, sunucu ve uygulama arasında güvenilir ve hızlı bir bağlantı kurarak iki yönlü iletişimi basitleştiren HTML5 weboksets kullanır. Bu teknolojiyi kullanarak WhatsApp, milyarlarca cihazda multimedya veri gönderebilir ve alabilir – gerçek zamanlı olarak.
WhatsApp Donanım Bileşenleri
2017’de, Facebook tarafından satın alındıktan dört yıl sonra WhatsApp, IBM Softlayer’dan çıkarıldı’s bulut ve facebook’a getirildi’S tescilli veri merkezleri.
Bildiğimiz şey, 2014’te WhatsApp yaklaşık 550 sunucu ve Erlang’ı yöneten 11.000’den fazla çekirdeğe ihtiyaç duyuyor. Ayrıca whatsapp olduğunu da biliyoruz’S kullanıcı tabanı, 2014 yılında 2020’de ulaştığı 2 milyardan fazla kullanıcıya kıyasla “sadece yaklaşık yarım milyardı. Yani, bu verileri göz önünde bulundurarak, WhatsApp’ın şu anda kaç sunucu ve çekirdek gerektirdiğini hayal etmenize izin vereceğiz. Çok fazla olduğunu hayal ediyoruz.
WhatsApp Mimarlık Diyagramı
WhatsApp’ı tam olarak anlamanın en kolay yolu’S mimari tasarımı elbette, bir WhatsApp mimarisi diyagramı aracılığıyla.
Sol taraftan başlayarak, her biri konuşmaları saklamak için yerel bir SQLite veritabanına ev sahipliği yapan birden fazla farklı istemcimiz (mobil ve web uygulamaları) var.
İstemciler, Yaws Web sunucusundan resimler ve videolar gibi multimedya verilerini göndermek ve almak için HTTP WebSockets kullanır. Ancak, gördüğünüz gibi, XMPP bu dosyaları ve diğer mesajları diğer kullanıcılara gerçekten göndermek için kullanılır.
Bir XMPP mesajı gönderildiğinde, yukarıda tasvir edilen adım dizisinden geçer. İlk olarak, whatsapp’a gönderilir’Seam ve freebsd üzerinde çalışan özel ejabberd sunucusu. Ejabberd sunucusu, mesajı bir sıraya koyduğu bir Mnesia veritabanı tablosuna kaydeder. Alıcı kullanıcı uygulamayı açtığında, sokete yeniden bağlandığında, kuyruktaki mesaj Ejabberd sunucusundan geçer ve alıcıya teslim edilir. Başarılı teslimat onaylandıktan sonra, mesaj Mnia veritabanından silinir.
Çözüm
Biz yapmazken’WhatsApp’ın kesin özelliklerini biliyorum’Teknik mimari ve sistem tasarımı, WhatsApp’ın kullandığı teknolojilere dayanan iyi bir fikir edinebiliriz. Umarız WhatsApp Mimarlık Tasarımını Keşfetme Makalesi, Yanan Sorularınızı Yanıtladığını Umarız. Artık WhatsApp Sunucusunun nasıl çalıştığını anladığınıza göre, WhatsApp Tech Stack’in neye benzediğini öğrendiğiniz ve hatta bir WhatsApp Mimarlık Diyagramı’nı taradı. Belki de kendi sohbet uygulaması projesini almaya yetkili hissediyorsunuzdur.
Eğer sen’Whatsapp’a paraları için bir koşu vermeye hazır, geliştirici kontrol panelimize kaydolun ve sohbet uygulamanızı ücretsiz olarak oluşturmaya başlayın.
Ancak, WhatsApp teknolojisi yığınındaki teknolojilerin çoğunun, son derece yüksek eşzamanlılıkları ölçeklendirme ve ele alma yetenekleri için özel olarak seçildiğini unutmayın.
Eğer sen’bir tanışma uygulaması veya teletıp oluşturmaya çalışıyorum (veya’aynı anda çevrimiçi olmak için neredeyse tüm dünyaya ihtiyacınız var), WhatsApp’ın yaptığı ölçek miktarına ihtiyacınız olmayabilir.
Başka bir deyişle, WhatsApp Tech yığını, WhatsApp için mükemmel olsa da, sizin için en iyi çözüm olmayabilir. Bir sohbet uygulaması için ideal mimari ve teknoloji yığını hakkında bilgi edinmek için bu makaleye gidin.
Hala sizin için neyin doğru olduğu hakkında sorularınız varsa, uzmanlarımızla konuşmaktan çekinmeyin ve kendi sohbet uygulamanızı oluşturmaya başlamadan önce.
Sadece daha fazlası için aç? İşte dalış yapmak için daha harika kaynaklar:
- Mesajlaşma uygulamalarında uçtan uca şifreleme efsanesi
- Sohbet uygulamasının mimarisini ve sistem tasarımını anlamak
- 11 Aptal Hata Geliştiricileri sohbet uygulaması oluştururken yapar
yazar hakkında
Cosette Cressler, SaaS, teknoloji, kariyer, verimlilik, girişimcilik ve kendini geliştirme konusunda uzmanlaşmış tutkulu bir içerik pazarlamacısıdır. Dikkat çeken ve eylemi yönlendiren tutarlı, sindirilebilir içerik oluşturarak her boyutta işletmelerin büyümesine yardımcı olur.
WhatsApp soket kullanıyor mu
О э э с сне
М з з рарегистрировали подозрительный тик, исходящий из Вашей сий. С п с о ы ы с п п с xм ы с с ы xм ы ы с с о x ыи с с ои от от от оз пе пе от от оз он оны от оны онныы онныы онн вы, а н, а нбн Вы,. Поч yatırıl?
Эта страница отображается в тех случаях, когда автоматическими системами Google регистрируются исходящие из вашей сети запросы, которые нарушают Условия использования. Сраница перестанет отображаться после того, как эи запросы прекратяттся. До эого момента дл Ekim ил исползования служб Google нобходим çar.
Источником запросов может служить вредоносное ПО, подключаемые модули браузера или скрипт, настроенный на автоматических рассылку запросов. Если вы используете общий доступ в Интернет, проблема может быть с компьютером с таким же IP-адресом, как у вас. Обратитесь к своемtern. Подробнее.
Проверка по со может luV пе появляться, ео е Вводия, оожо Вы воде сн ыыыые ае iri ае ае iri ае ае iri пе ае iri ае ае iri пе ае iri пе ае iri пе ае iri пе ае ае ае ае iri пе аотототыыыыыыыыыыыететет ]p anauma аете keluma емами, или же водите запросы очень часто.
XMPP vs WebSocket – Uygulamalar için kullanılacak?
Sıfırdan duyarlı ve son derece zengin bir anlık mesajlaşma (IM) uygulaması oluşturmak amacınızdır, en çok ilgili kısım şudur: Mesajlaşma için en uygun protokolü bulmak. Sunulan seçenekler (her ikisi de) birkaç dakika içinde açıklanmaktadır.
Bunu açıkça söylemek gerekirse, bu yazı aracılığıyla XMPP protokolü ve WebSocket hakkında önemli bilgiler getirmeye çalıştık. Farklı özellikleri ve tesisleriyle tanınan bu iki IM protokolü. Ancak,’S seçmek kolay değil, kolay avantajları ve sınırlamaları vardır.
Öğrenme hedefleri
En son haberler için abone
Mukhaddin Beshkov
Doğrulanmış uzman
20 yıldan fazla BT Sistem Mühendisliği, Güvenlik Analizi, Çözüm Mimarisi uzmanlığı. OS’de (Windows, Linux, Unix), programlama (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, Postgresql). Komut dosyası (PowerShell, Python), DevOps (mikro hizmetler, kaplar, CI/CD), Web Geliştirme (düğüm.js, reaksiyon, açısal). BT sistemlerini yönetmede başarılı geçmiş.
Tanım
XMPP – Protokol Hakkında Her Şey
XML Fragment Exchange B/W sunucu-istemci ikilisi için kullanılan XMPP, iletişim ile ilgili erken açık standart protokollerden biridir. 20 yılı aşkın bir geçmişi var. Etkili uygulaması, uygun taşıma bağlanmasının zorunlu kullanımını gerektirir.
OSI modelinde, XMPP esas olarak uygulama katmanında yapısal desen XML’yi (parçalarının veya sözdiziminin) detaylandıran işlev görür. İletim/aktarma için taşıma katmanlarına ihtiyaç duyuyor’ protokoller’ (HTTP veya TCP) Yardım.
eXgerilebilir Mözetleme & Pyankı PRotokol, çoğunlukla sohbet uygulamalarını, ses/video arama gibi tesislerle uygulamalar, metin/zengin medya ve çok bölümlü görüntülü arama gibi gelişmelerde kullanılır.
Profesyonel
XMPP ile bir IM uygulaması geliştirirken keyif almanız gereken birçok avantajınız var. Örneğin:
- Siber güvenlik özellikleri, önde gelen dijital dünya tehlikelerini uzak tutacak kadar gelişmiş.
- Merkezi olmayan mimari, herkes için erişilebilir olmasını sağlar.
- Sunulan teknik destek güvenilir ve etkilidir.
- Esnektir ve son kullanıcıların proje ihtiyacına göre veri iletim sürecinde değişiklik yapmasına izin verir.
- Kalıcı (sürekli) bir bağlantı kurmaya yardımcı olur.
- Farklı mimarilerin veri iletmesini sağlayarak iletişim b/b sunucularını basitleştirir.
- Hemen son kullanıcının varlığına doğru tepki verir. Bu yüzden sen’Son kullanıcının çevrimiçi veya çevrimdışı olup olmadığını öğrenebilecek.
Eksileri
XMPP birden fazla fayda sağlasa bile, kusursuz değil. Bu protokolün bazı belirgin dezavantajları veya eksileri var.
- QoS mekanizması yok
- Metin tabanlı XML akışı veya iletişim, operasyonel genel giderleri arttırır
- İçerik taşımacılığı genellikle herhangi bir senkronizasyon olmadan gerçekleşir
- Bazen, varlık ve/veya anlık mesajlar sunucunun aşırı yüklenmesine neden olabilir
WebSocket – Protokol Hakkında Her Şey
BT’İkili ve metin verilerine izin veren modern bir dönüm IM protokolü’Herhangi bir kalıcı kanalda sunucu-müşteri için s-fro akışı.
BT’Doğada çift yönlü, tam çift yönlü ve durumlu. BT’esas olarak devam eden bir bağlantıya ihtiyaç duyan bir mobil uygulama için kullanılır. Transitin doğasını ve türünü tanımlamakla ilgisi yok. Sohbet uygulamasında IM yeteneğini tam olarak uygulamak için diğer protokollerin desteğine ihtiyacı var.
Profesyonel
WebSocket, veri iletiminde oluşturulan HTTP tabanlı teknolojinin boşluğu doldurmak için tasarlanmıştır. Zamanla, bundan daha fazla olduğu gözlendi. WebSockets ile keyif almanız gereken temel avantajlara bir göz atın.
- Sunucu veya istemci durdurmadıkça iletişimi sürdürür
- Hız sözü söz konusu olduğunda WebSocket için neredeyse hiç eşleşme yok. Verileri Ajax ve HTTP’den daha hızlı iletebilir
- Mümkün olan menşe sunucular arasında veri iletimini yapabilir
- Mobil, web ve masaüstü gibi birden fazla platform türü ile uyumludur
- WebSockets’i kullanmak, yalnızca 2 bayt masrafları uyguladığı için uygun maliyetlidir
- Uzun oy kullanma sorununu etkili bir şekilde giderir
Eksileri
Avantajlara rağmen, WebSocket’in dikkat çekmeye değer bazı potansiyel dezavantajları var. Örneğin:
- Yalnızca tamamen HTML 5 uyumlu bir tarayıcınız olduğunda çalışır
- Ajax benzeri başarı mekanizması yok
- Aracı veya kenar önbellekleme mümkün değil
- WebSocket hareket halindeyken, geliştiriciler en basit HTTP durumlarını bile uygulamakta zorlanacaklar
Protokollerin karşılaştırılması
Bu iki protokolün temel anlamını daha iyi anladıktan sonra,’S Detaylı bir XMPP V/S WebSocket Karşılaştırmaya geçme zamanı. En çok ilgili birkaç yönü seçtik ve daha sonra bu ikisinin tekliflerini karşılaştırdık.
Bu iki protokolün kısa bir güvenlik değerlendirmesi, teminatsız bir protokol kullanmak her şeyi riske atacağı için çok önemlidir. XMPP zamana bağlı bir protokoldür ve bu aktivasyon yıllarında birden fazla değişiklik ve iyileştirme geçirmiştir. Güvenlik gereksinimleri değiştikçe protokol güvenlik cephesini geliştirir. Çeşitli güvenlik katmanları ve özellikleri ile birlikte gelir.
XMPP etkinleştirildiğinde, kişisel kimlik zorunludur. İhtiyacın bir parçası olmadan önce hem mesajlar hem de ana bilgisayarlar kimlik doğrulanmalıdır. Spam tehditlerini kontrol altında tutmak yeterli olsa da,
XMPP, son kullanıcıların saatin ihtiyacına göre güvenlik katmanları eklemelerine izin verir.
Şifreleme söz konusu olduğunda, XMPP iki tür sunar. İlk şifreleme, bir bağlantı kurulduğunda ve kimlik doğrulaması başladığında ortaya çıkar. Bu şifreleme SASL ile tamamlanır. Bağlantı başarıyla oluşturulduktan sonra, istemci-sunucu iletişimi TLS şifrelemesi ile desteklenir.
WebSocket ise’S güvenlik teklifi dikkatle incelenir, biraz iyileştirmeye ihtiyaç duyduğunu öğrenebilirsiniz. BT’çok genç bir protokol ve XMPP’nin sunduğu şeyle eşleşmesi için daha fazla iyileştirme ve yükseltme gerektiriyor. Ama değil’t Güvenlikten yoksun olduğu anlamına gelir. Kötü niyetli saldırı girişini uzak tutacak kadar güçlü şifreleme sunar.
XMPP’nin temel operasyonel mimarisi merkezi olmayan, WebSockets merkezi bir mimariyi takip ediyor. XMPP, istemci-sunucu modeline dayanır ve müşteriler arasındaki doğrudan etkileşimi önler. WebSockets API’lerin yardımını alır ve istemci ve sunucunun sürekli iletişim kurduğundan emin olun.
- Diğer protokollerle uyumluluk
XMPP ilkel bir protokoldür ve API uyumluluğundan yoksun. Öte yandan, WebSocket, diğer protokollerle daha iyi uyumluluğun çekirdeği olan oldukça API optimize edilmiştir.
- İkili verilerin gönderilmesi ve alma
WebSockets’te iletişim, kodları ve mesajları kullanmayı, kullanıcıları ayrıştırma ve arabelleğe alma sorunlarından arındırmadan ayarlamayı içerir. Bu, veri aktarımını hızlı yapar. XMPP, ikili veri aktarımı için çok ince bir yol izliyor, bu da her şeyi hantal yapıyor.
WebSocket, taşıma katmanı ile ilgilenir’XMPP uygulama katmanı ile ilgilenirken’S üzerinde genişletilebilirlik. BT’WebSocks üzerinden 40’tan fazla protokol eklemek mümkün. Ama xmpp yok’T esnek.
Her ikisi de verileri alevlendirme hızında gerçek zamanlı olarak iletmek için yararlı olsa da, WebSocket merkezi doğası ve sürekli iletişimi nedeniyle bu cephede XMPP’den daha iyi performans gösterir. XMPP kuvveti kimlik doğrulaması ve hem sunucunun hem de istemcinin yetkisi performansını biraz yavaşlatır.
XMPP ve WebSocket kullanma örnekleri
XMPP, WhatsApp, GTalk ve Grindr uygulamalarında kullanılır ve sohbet özelliklerinde dahili olarak kullanılır. Spesifik olmak gerekirse, protokol çoğunlukla bire bir güvenli veya grup tabanlı iletişimin uygulamanın ana özelliği olduğu durumlarda tercih edilir.
Trello, Slack ve Discord, WebSockets kullanılarak oluşturulan en ünlü üç uygulama. Bildiğimiz gibi, bu uygulamalar ekipler ve uzak çalışanlar için. Sonuç olarak, protokol, sürekli bağlantı kullandığından, sınırlı sanal çalışma alanları için daha kullanışlıdır.
Sonuç – hangi protokol kullanılmalı?
WebSocket ve XMPP – Her ikisi de anlık mesajlaşma için tasarlanmıştır. Ancak hangisini seçmeniz gereken bir soru, proje gereksinimlerini bağlam haline getirdikten sonra cevaplanması gereken bir sorudur?. Anladığımız kadarıyla, çok sayıda veri aktarılması gerektiğinde WebSockets’i kullanmanızı öneririz ve iletişim açık kalmalıdır.
XMPP, geliştirme tonlarca eklenti ve güvenlik gerektirdiğinde yapmak için en iyi seçimdir. Yani, bu ikisi arasında bir seçim yapmadan önce, geliştirme hedeflerinizin tam olarak ne olduğunu bulmanız gerekir. Önceden çalışın ve sonra buna göre bir protokol seçin. Ancak, her ikisinin de doğru kullanılırsa her ikisinin de PAR performansında teslim edileceğinden emindir.
SSS
XMPP ne için kullanılır?
Anlık mesajlaşma, ses ve görüntülü sohbet ve varlık bilgileri gibi gerçek zamanlı iletişim için XMPP (genişletilebilir mesajlaşma ve varlık protokolü) kullanılır.
WebSocket ne için iyi?
WebSocket, çevrimiçi oyun, sohbet uygulamaları ve finansal ticaret platformları gibi gerçek zamanlı web uygulamaları için iyidir.
XMPP WebSocket ile kullanılabilir mi?
Evet, XMPP gerçek zamanlı iletişim uygulamalarını geliştirmek için WebSocket ile kullanılabilir.
WebSocket’in XMPP üzerinden avantajları nelerdir?
WebSocket daha düşük gecikme, daha iyi performansa sahiptir ve uygulanması XMPP’den daha kolay olabilir.
Dosya aktarımı için WebSocket kullanılabilir mi?
Resmi spesifikasyona göre, WebSocket dosya aktarımı için tasarlanmamış. Ancak, bazı geliştiriciler WebSocket’i dosya aktarımı için kullanmanın yollarını buldular. Github deposu