Xmpp Vs Websocket [kapalı]


88

Gerçek zamanlı sohbete yakın bir web sitesi geliştirmek üzereyim. Xmpp veya websocket protokolleri kullanılarak uygulanabileceğini biliyorum. Xmpp protokolünün 1999 yılında geliştirildiğini de biliyorum ve bugünlerde olgunlaşması gerektiğini düşünüyorum. Öte yandan, websocket protokolü 2011 yılında geliştirilmiştir.

  1. Xmpp gerçek zamanlı konuşmaları idare etmede iyiyse websocket'e ne gerek vardı?
  2. 2 protokol arasındaki temel farklar nelerdir?
  3. Ve ne zaman birini diğerine tercih etmeliyim?

1
Geçenlerde aynı sorunla karşılaştım, cevabım WebSockets'e gitmekti. Node.JS son derece popüler bir dil haline geliyor ve haklara göre öyle olmalı. XMPP tamam - ancak bence bu eski teknolojiyi kullanmaya karar vererek ilerlemenizi sınırlıyorsunuz. Ancak Node, zor bir canavar ve ona JavaScript'ten farklı bir şekilde yaklaşmanız gerekiyor. Yeterince sabırlıysanız, Düğüm'e gitmenizi öneririm - sadece bunun için değil, diğer alanlarda daha kolay genişlemenize izin verecektir.
JustSteveKing

7
XMPP, Genişletilebilir Mesajlaşma ve Durum Protokolüdür, Websocket, Port 80 üzerinden tam çift yönlü iletişim sağlayan bir protokoldür. Elmaları Portakallarla karşılaştırırsınız.
Flow

17
@Flow: Size göre elmaları portakallarla karşılaştırıyor olabilirim. Ama sorduğum şey, gerçek zamanlı sohbet özelliği sağlayan bir web sitesi geliştirirken seçmem gereken şey.
Khafaga

1
@JustSteveKing Çoğu şey XMPP'de zaten yapılır, ancak bunları node.js'de yönetmeniz gerekir. Bu, tekerleği yeniden icat etmeye eşittir.
Shahid Karimi

Yanıtlar:


133

Kısa cevap "her ikisi" dir.

XMPP, gerçek zamanlı sohbet (ve bu konudaki diğer pek çok şeyi) yapmak için bir dizi uygulama protokolüdür - daha sonra bir şekilde ağ üzerinden taşınması gerekir, bu nedenle bir taşıma bağlantısına ihtiyacınız vardır. XMPP için üç ana aktarım bağlaması vardır -

  1. Cihazlarda yerel istemcilerle genellikle İnternette kullanılan TCP / IP
  2. Tarayıcıda XMPP kullanılırken geleneksel olarak kullanılan HTTP (BOSH olarak adlandırılır) (tarayıcıdaki Javascript uygulamalarında TCP-IP mevcut olmadığından)
  3. Modern bir tarayıcıda XMPP yaparken kullanılan Websockets.

Dolayısıyla, bir tarayıcıda bir sohbet uygulaması geliştiriyorsanız, uygulama protokolü olarak XMPP'yi seçersiniz ve ağ aktarımı olarak web soketlerini (modern bir tarayıcıda) veya BOSH'u (eski bir tarayıcıda) kullanırsınız. Stanza.io ( https://github.com/otalk/stanza.io ) gibi Javascript için bir XMPP kitaplığı kullanıyorsanız , her ikisini de destekler ve taşıma katmanı yerine yalnızca ' XMPP'yi düşünürsünüz. hangi uç noktaya bağlanacağını söylemeniz gerektiğinde kurulum dışında.

(Sohbet için 'sadece web soketleri' kullanamazsınız - XMPP olmadan web soketlerini kullanabilirsiniz, ancak bunun anlamı, sohbet için kendi uygulama katmanı protokolünüzü icat ettiğinizdir ve muhtemelen tasarruf edeceksiniz Kullanışlı özelliklere (güvenlik, kimlik, genişletilebilirlik vb.) sahip olan ve bunun yerine XMPP'ye giderek mevcut kitaplıkların ve sunucuların bulunduğu bir işin yazılmasından yararlanarak çok fazla zaman ve baş ağrısı.)


1
Merhabalar, üzgünüm, sorular bir süredir, merak ediyorum, bu yüzden taşıma bağlamanın socket.io/strophe.js gibi olduğu ve xmpp'nin (openfire / Ejabbered) olduğu anlamına mı geliyor?
John

1
Hayır, adlandırdığınız şey kitaplıklara karşı sunuculardır.
Kev

Katmanlar hakkında daha fazla bilgi (taşıma, uygulama katmanları dahil): en.wikipedia.org/wiki/OSI_model
Karina Klinkevičiūtė

2
Kev'den iyi bir cevap, ancak 1> TCP'nin 4. katmana - taşıma katmanına, hem HTTP hem de Websocket katman 7'ye - uygulama katmanına ait olduğunu belirtmekte fayda var.
Gob001

Gerçekten @ Gob00st - burada da kafam karıştı. Kev'den gelen bu yanıt "her ikisi de" diyor çünkü " ağ aktarımı olarak web soketleri (modern bir tarayıcıda) kullanacaksınız " . Ancak WebSocket'in (XMPP ve HTTP olarak) aslında OSI katman 7'deki uygulama ( aktarım değil ) protokolleri olduğu gerçeğiyle nasıl uzlaştırabiliriz ? XMPP neden modern bir tarayıcıda WebSockets'in "üstüne" çıksın?
Amelio Vazquez-Reina
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.