XMPP

XMPP jest Extensible Messaging and Presence Protocol, zestawem otwartych technologii do komunikatorów, obecności, czatu wielu firm, połączeń głosowych i wideo, współpracy, lekkiego oprogramowania pośredniczącego, syndykacji treści i ogólnego routingu danych XML.

XMPP został pierwotnie opracowany w społeczności open-source Jabbera, aby zapewnić otwartą, zdecentralizowaną alternatywę dla zamkniętych komunikatorów internetowych w tym czasie. XMPP oferuje kilka kluczowych zalet w stosunku do takich usług:

  • Open-protokoły XMPP są bezpłatne, otwarte, publiczne i łatwo zrozumiałe; ponadto istnieje wiele implementacji w postaci klientów, serwerów, komponentów serwerowych i bibliotek kodu.

  • Standard-Internet Engineering Task Force (IETF) sformalizował podstawowe protokoły przesyłania strumieniowego XML jako zatwierdzoną technologię komunikatorów i obecności. Specyfikacje XMPP zostały opublikowane jako RFC 3920 i RFC 3921 w 2004 roku, a XMPP Standards Foundation nadal publikuje wiele protokołów rozszerzeń XMPP. W 2011 r.podstawowe RFC zostały zmienione, co zaowocowało najbardziej aktualnymi specyfikacjami (RFC 6120, RFC 6121 i RFC 7622).

  • sprawdzone – pierwsze technologie Jabber/XMPP zostały opracowane przez Jeremie Miller w 1998 roku i są obecnie dość stabilne; setki programistów pracują nad tymi technologiami, istnieją dziesiątki tysięcy serwerów XMPP działających obecnie w Internecie, a miliony ludzi używają XMPP do komunikatorów internetowych za pośrednictwem usług publicznych, takich jak Google Talk i wdrożenia XMPP w organizacjach na całym świecie.

  • zdecentralizowana-architektura sieci XMPP jest podobna do poczty elektronicznej; w rezultacie każdy może uruchomić własny serwer XMPP, umożliwiając osobom i organizacjom przejęcie kontroli nad ich komunikacją.

  • Bezpieczeństwo-każdy serwer XMPP może być odizolowany od sieci publicznej (np. w firmowym intranecie), a solidne zabezpieczenia przy użyciu SASL i TLS zostały wbudowane w podstawowe specyfikacje XMPP. Ponadto społeczność programistów XMPP aktywnie pracuje nad kompleksowym szyfrowaniem, aby jeszcze bardziej podnieść poprzeczkę bezpieczeństwa.

  • Extensible-korzystając z mocy XML, każdy może zbudować niestandardową funkcjonalność na bazie podstawowych protokołów; aby utrzymać interoperacyjność, wspólne rozszerzenia są publikowane w serii XEP, ale taka publikacja nie jest wymagana, a organizacje mogą utrzymywać własne prywatne rozszerzenia, jeśli tego chcesz.

  • elastyczność-aplikacje XMPP wykraczające poza IM obejmują zarządzanie siecią, syndykację treści, narzędzia do współpracy, udostępnianie plików, gry, zdalne monitorowanie systemów, Usługi internetowe, lekkie oprogramowanie pośrednie, przetwarzanie w chmurze i wiele innych.

  • różnorodność-szeroka gama firm i projektów open-source używa XMPP do tworzenia i wdrażania aplikacji i usług w czasie rzeczywistym; nigdy nie zostaniesz „zablokowany”, gdy używasz technologii XMPP.

ta strona zawiera wprowadzenie do różnych technologii XMPP, w tym linki do specyfikacji, implementacji, samouczków i specjalnych miejsc dyskusji.

kluczowe technologie XMPP:

  • Core — informacje o podstawowych technologiach XMPP do przesyłania strumieniowego XML
  • Jingle — sygnalizacja multimedialna zgodna z SIP dla głosowych, wideo, przesyłania plików i innych aplikacji
  • Czat dla wielu użytkowników-elastyczna komunikacja między wieloma firmami
  • PubSub-alerty i powiadomienia o syndykacji danych, bogatej obecności i nie tylko
  • bosh — powiązanie http dla ruchu XMPP (i innych)

rdzeń

w swoim rdzeniu XMPP jest technologią do przesyłania strumieniowego XML przez sieć. Protokół, który wyłonił się ze społeczności Jabber open-source w 1999 roku, został pierwotnie zaprojektowany, aby zapewnić otwartą, bezpieczną, zdecentralizowaną alternatywę dla zorientowanych na klienta usług komunikatorów (IM), takich jak ICQ, AIM i MSN. Podstawowe technologie zostały sformalizowane pod nazwą Extensible Messaging and Presence Protocol (XMPP) na IETF w 2004 roku. Te podstawowe technologie obejmują:

  • podstawowa warstwa przesyłania strumieniowego XML
  • szyfrowanie kanałów przy użyciu Transport Layer Security (TLS)
  • silne uwierzytelnianie przy użyciu Simple Authentication and Security Layer (SASL)
  • wykorzystanie UTF-8 do pełnej obsługi Unicode, w tym w pełni umiędzynarodowionych adresów
  • Wbudowana informacja o dostępności sieci („obecność”)
  • subskrypcje obecności dla dwukierunkowej autoryzacji
  • listy kontaktów z obsługą obecności („spisy”)

specyfikacje

podstawowe technologie XMPP są zdefiniowane w dwóch RFC opublikowane przez IETF:

  • RFC 6120: Rdzeń XMPP
  • RFC 6121: XMPP IM
  • RFC 7622: format adresu XMPP

pierwsze RFC XMPP (RFC 3920 i RFC 3921) zostały opracowane przez grupę roboczą XMPP IETF w październiku 2004 roku. W 2011 r.zostały one zmienione, co zaowocowało obecnymi specyfikacjami.

implementacje

istnieje wiele implementacji podstawowych specyfikacji XMPP. Szczegółowe informacje można znaleźć na następujących stronach:

  • Klienci
  • Serwery
  • Biblioteki kodów

Jingle

zasadniczo Jingle zapewnia klientom Jabbera sposób na konfigurację, zarządzanie i usuwanie sesji multimedialnych. Takie sesje mogą obsługiwać szeroką gamę typów aplikacji (takich jak czat głosowy, czat wideo i przesyłanie plików) i korzystać z szerokiej gamy metod transportu mediów (takich jak TCP, UDP, RTP, a nawet sam XMPP w paśmie). Sygnał do ustanowienia sesji Jingle jest wysyłany przez XMPP, a zazwyczaj media są wysyłane bezpośrednio peer-to-peer lub przez media relay. Jingle zapewnia pluggable framework zarówno dla typów aplikacji i transportu mediów; w przypadku rozmów głosowych i wideo, negocjacja Jingle zwykle skutkuje wykorzystaniem protokołu transportu w czasie rzeczywistym (RTP) jako transportu mediów, a zatem jest kompatybilny z istniejącymi technologiami multimedialnymi, takimi jak protokół inicjacji sesji (SIP). Ponadto semantyka sygnalizacji Jingle została zaprojektowana tak, aby była spójna zarówno z SIP, jak i Session Description Protocol (SDP), co ułatwia dostarczanie bram sygnalizacyjnych między sieciami XMPP i sieciami SIP.

specyfikacje

Jingle jest zdefiniowane w kilku specyfikacjach:

  • XEP-0166: Jingle
  • XEP-0167: sesje Jingle RTP
  • XEP-0176: metoda transportu Jingle ICE-UDP
  • XEP-0177: metoda transportu Jingle Raw UDP
  • XEP-0181: Jingle DTMF
  • XEP-0234: jingle file transfer

implementacje

uwaga: wiele z poniższych implementacji obsługuje starszy protokół Google Talk i jest uaktualnianych do obsługi jingle zgodnie z jego definicją w specyfikacji; skontaktuj się z twórcami projektu, aby uzyskać szczegółowe informacje.

Klienci

  • Coccinella
  • Gajim
  • Jitsi (dawniej SIP Communicator)
  • Movim
  • Pandion
  • Pidgin (dawniej Gaim)
  • psi
  • Telepathy
  • Yate

Libraries

  • Libjingle (C/C++)
  • Smack (Java)
  • Telepathy (C)
  • yjingle (c++)

Menedżery połączeń / Serwery VoIP

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC jest rozszerzeniem XMPP do wielopartyjnej wymiany informacji podobnej do Internet Relay Chat (IRC), w ramach której wielu użytkowników XMPP może wymieniać wiadomości w kontekście pokoju lub kanału. Oprócz standardowych funkcji czatu, takich jak tematy pokojów i zaproszenia, protokół definiuje silny model kontroli pokoju, w tym możliwość wyrzucania i blokowania użytkowników, wymieniania moderatorów i administratorów pokoju, wymagania członkostwa lub haseł w celu dołączenia do pokoju itp. Ponieważ MUC roomy są oparte na XMPP, mogą być używane do wymiany nie tylko treści wiadomości tekstowych, ale szerokiej gamy ładunków XML.

specyfikacje

MUC jest zdefiniowany w jednej specyfikacji podstawowej (XEP-0045) i kilku specyfikacjach pomocniczych:

  • XEP-0045: Czat dla wielu użytkowników
  • XEP-0249: bezpośrednie zaproszenia MUC
  • XEP-0272: wieloosobowe Jingle

implementacje

Serwery-następujące serwery XMPP zawierają wbudowaną obsługę MUC:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosody
  • Tigase

komponenty zewnętrzne – następujące samodzielne komponenty mogą być używane z szeroką gamą serwerów XMPP:

  • mu-conference
  • palaver

Klienci

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • psi

biblioteki

  • dowolne:XMPP (Perl)
  • gloox (c++)
  • jabber-net (. Net)
  • libpurple (C)
  • Smack (Java)
  • XMPP4R (Ruby)

PubSub

PubSub jest rozszerzeniem protokołu dla ogólnej funkcjonalności publikuj-Subskrybuj, określonej w XEP-0060. Protokół umożliwia podmiotom XMPP tworzenie węzłów (tematów) w usłudze pubsub i publikowanie informacji w tych węzłach; powiadomienie o zdarzeniu (z lub bez ładunku) jest następnie wysyłane do wszystkich podmiotów, które subskrybowały węzeł. Dlatego Pubsub przestrzega klasycznego wzorca projektowego obserwatora i może służyć jako podstawa dla szerokiej gamy aplikacji, w tym kanałów informacyjnych, syndykacji treści, bogatej obecności, geolokalizacji, systemów przepływu pracy, systemów zarządzania siecią i wszelkich innych aplikacji wymagających powiadomień o zdarzeniach. Personal eventing protocol (PEP), określony w XEP-0163, zapewnia profil pubsub świadomy obecności, który umożliwia każdemu użytkownikowi JabberID działanie jako wirtualna usługa pubsub dla bogatej obecności, mikroblogowania, sieci społecznościowych i interakcji w czasie rzeczywistym.

specyfikacje

PubSub jest zdefiniowany w kilku specyfikacjach:

  • XEP-0060: Publikuj-Subskrybuj
  • XEP-0163: Personal Eventing Protocol
  • XEP-0248: węzły kolekcji PubSub

ładunki

PubSub i PEP są „niezależne od ładunku” — możesz ich używać jako neutralnych transportów dla szerokiej gamy formatów danych. Niektóre z bardziej popularnych ładunków są wymienione poniżej, szczególnie ze względu na bogatą obecność związaną z użytkownikami IM:

  • działania
  • powiadomienia Atom / RSS
  • awatary
  • wizyty na czacie
  • działania związane z Grami
  • Geolokalizacja
  • nastroje
  • melodie muzyczne
  • działania TV/Video
  • wizyty na stronie

wdrożenia

Serwery – poniższe Serwery XMPP zawierają wbudowaną obsługę Pubsub lub Pep:

  • ejabberd
  • Jabber XCP
  • M-Link
  • Openfire
  • Tigase

Komponenty serwera

  • Idavoll

klienci

  • Gajim
  • MOVIM
  • psi

3.4 Biblioteki

  • strophe (C lub JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH to „bidirectional-streams Over Synchronous HTTP”, technologia do dwukierunkowej komunikacji poprzez Hypertext Transfer Protocol (HTTP). BOSH emuluje wiele prymitywów transportowych znanych z protokołu TCP (Transmission Control Protocol). W przypadku aplikacji, które wymagają zarówno komunikacji „push”, jak i „pull”, BOSH jest znacznie bardziej wydajny i responsywny niż większość innych dwukierunkowych protokołów transportowych opartych na HTTP i technik znanych jako AJAX. BOSH osiąga tę wydajność i niskie opóźnienia, unikając ankiet HTTP, ale robi to bez uciekania się do odpowiedzi HTTP, jak to ma miejsce w technice znanej jako Comet. Do tej pory BOSH był używany głównie jako transport ruchu wymienianego między klientami i serwerami Jabbera/XMPP (np. w celu ułatwienia połączeń z klientami internetowymi i z klientami mobilnymi w sieciach przerywanych). Jednak BOSH nie jest związany wyłącznie z XMPP i może być używany również do innych rodzajów ruchu.

Specyfikacja BOSH jest zdefiniowana w dwóch specyfikacjach:

  • XEP-0124: Bidirectional-streams Over Synchronous HTTP
  • XEP-0206: XMPP Over BOSH

implementacje

Serwery następujące serwery XMPP zawierają wbudowaną obsługę BOSH:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosody
  • Tigase

menedżery połączeń

następujące samodzielne menedżery połączeń XMPP mogą być używane z szeroką gamą serwerów XMPP:

  • JabberHTTPBind
  • Pendżab
  • node-xmpp-bosh
  • rhb

Klienci

  • Adium
  • Gajim
  • jwchat
  • Pidgin
  • soashable
  • sparkweb
  • SWIFT
  • tigase messenger
  • Tigase Minichat

Biblioteki

  • emite (GWT)
  • Gloox (c++)
  • jsjac (JavaScript)
  • strophe (C lub JavaScript)
  • Swiften (C++)
  • Xiff (Flash)
  • xmpp4gwt (GWT)
  • Xmpp4js (JavaScript)
  • XMPP4R (Ruby)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.