Mam zamiar stworzyć stronę internetową, która będzie miała czat w czasie niemal rzeczywistym. Wiem, że można to zaimplementować za pomocą protokołów xmpp lub websocket. Wiem też, że protokół xmpp powstał w 1999 roku i myślę, że w dzisiejszych czasach powinien być już dojrzały, z drugiej strony protokół websocket został opracowany w 2011 roku.
- Jaka była potrzeba Websocket, jeśli xmpp był dobry w obsłudze rozmów w czasie rzeczywistym?
- Jakie są główne różnice między dwoma protokołami?
- A kiedy powinienem wybrać jedną z nich zamiast drugiej?
Odpowiedzi:
Krótka odpowiedź brzmi: „oba”.
XMPP to zestaw protokołów aplikacji do prowadzenia rozmów w czasie rzeczywistym (i wielu innych rzeczy, jeśli o to chodzi) - następnie musi zostać w jakiś sposób przesłany przez sieć, więc potrzebujesz powiązania transportowego. Istnieją trzy główne powiązania transportowe dla XMPP -
Więc jeśli tworzysz aplikację do czatu w przeglądarce, wybierz XMPP jako protokół aplikacji i użyjesz websockets (w nowoczesnej przeglądarce) lub BOSH (w starszej przeglądarce) jako transportu sieciowego. Jeśli używasz biblioteki XMPP dla Javascript, takiej jak Stanza.io ( https://github.com/otalk/stanza.io ), będzie ona obsługiwać obie i będziesz po prostu myśleć o `` XMPP '', a nie o warstwie transportowej, inaczej niż podczas konfiguracji, kiedy musisz powiedzieć mu, z którym punktem końcowym ma się połączyć.
(Nie możesz używać `` tylko gniazd sieciowych '' do czatu - możesz używać gniazd internetowych bez XMPP, ale to naprawdę oznacza, że wymyślasz własny protokół warstwy aplikacji do czatu, a szanse, które zamierzasz zaoszczędzić dużo czasu i bólów głowy, wykorzystując pracę, która już została włożona w napisanie takiej, która ma przydatne właściwości (bezpieczeństwo, tożsamość, rozszerzalność itp.) i dla której istnieją istniejące biblioteki i serwery, zamiast tego przechodząc na XMPP.
źródło