XMPP

XMPP este protocolul Extensibil de mesagerie și prezență, un set de tehnologii deschise pentru mesagerie instantanee, prezență, chat multi-partid, apeluri vocale și video, colaborare, middleware ușor, sindicalizare de conținut și rutare generalizată a datelor XML.

XMPP a fost inițial dezvoltat în comunitatea open-source Jabber pentru a oferi o alternativă deschisă și descentralizată la serviciile de mesagerie instantanee închise la acel moment. XMPP oferă mai multe avantaje cheie față de astfel de servicii:

  • deschis-protocoalele XMPP sunt gratuite, deschise, publice și ușor de înțeles; în plus, există mai multe implementări sub formă de clienți, servere, componente de server și biblioteci de coduri.

  • Standard – Internet Engineering Task Force (IETF) a formalizat protocoalele de streaming XML de bază ca o tehnologie aprobată de mesagerie instantanee și prezență. Specificațiile XMPP au fost publicate ca RFC 3920 și RFC 3921 în 2004, iar Fundația pentru standarde XMPP continuă să publice multe protocoale de extensie XMPP. În 2011, RFC-urile de bază au fost revizuite, rezultând cele mai actualizate specificații (RFC 6120, RFC 6121 și RFC 7622).

  • dovedit — primele tehnologii Jabber / XMPP au fost dezvoltate de Jeremie Miller în 1998 și sunt acum destul de stabile; sute de dezvoltatori lucrează la aceste tehnologii, există zeci de mii de servere XMPP care rulează astăzi pe Internet și milioane de oameni folosesc XMPP pentru mesagerie instantanee prin servicii publice precum Google Talk și implementări XMPP la organizații din întreaga lume.

  • descentralizat-arhitectura rețelei XMPP este similară cu e-mailul; ca urmare, oricine își poate rula propriul server XMPP, permițând persoanelor și organizațiilor să preia controlul asupra experienței lor de comunicare.

  • Secure – orice server XMPP poate fi izolat de rețeaua publică (de exemplu, pe un intranet al companiei), iar securitatea robustă folosind SASL și TLS a fost încorporată în specificațiile XMPP de bază. În plus, comunitatea de dezvoltatori XMPP lucrează activ la criptarea end-to-end pentru a ridica și mai mult bara de securitate.

  • extensibil-folosind puterea XML, oricine poate construi funcționalități personalizate pe lângă protocoalele de bază; pentru a menține interoperabilitatea, extensiile comune sunt publicate în seria XEP, dar o astfel de publicare nu este necesară, iar organizațiile își pot menține propriile extensii private, dacă se dorește.

  • flexibil-aplicațiile XMPP dincolo de IM includ gestionarea rețelei, sindicalizarea conținutului, instrumente de colaborare, partajarea fișierelor, jocuri, monitorizarea sistemelor la distanță, Servicii web, middleware ușor, cloud computing și multe altele.

  • Diverse-o gamă largă de companii și proiecte open-source folosesc XMPP pentru a construi și implementa aplicații și servicii în timp real; nu veți fi niciodată „blocați” atunci când utilizați tehnologiile XMPP.

Această pagină oferă o introducere în diverse tehnologii XMPP, inclusiv link-uri către specificații, implementări, tutoriale și locuri de discuții cu scop special.

tehnologii cheie XMPP:

  • Core — informații despre tehnologiile XMPP de bază pentru streaming XML
  • Jingle — SIP-compatibil multimedia de semnalizare pentru voce, video, transfer de fișiere, și alte aplicații
  • Multi-User Chat — flexibil, comunicare multi-partid
  • PubSub — alerte și notificări pentru sindicalizarea datelor, prezență bogată, și mai mult
  • bosh — o legare HTTP pentru XMPP (și alte) trafic

core

la baza sa, XMPP este o tehnologie pentru streaming xml printr-o rețea. Protocolul, care a apărut din comunitatea open-source Jabber în 1999, a fost inițial conceput pentru a oferi o alternativă deschisă, sigură și descentralizată la serviciile de mesagerie instantanee (IM) orientate către consumatori, cum ar fi ICQ, AIM și MSN. Tehnologiile de bază au fost formalizate sub numele Extensible Messaging and Presence Protocol (XMPP) la IETF în 2004. Aceste tehnologii de bază includ:

  • stratul de bază de streaming XML
  • criptare canal folosind Transport Layer Security (TLS)
  • autentificare puternică folosind simplu autentificare și stratul de securitate (SASL)
  • utilizarea UTF-8 pentru suport complet Unicode, inclusiv adrese complet internaționalizate
  • built-in informații despre disponibilitatea rețelei („prezență”)
  • abonamente de prezență pentru autorizare bidirecțională
  • liste de contacte activate pentru prezență („liste”)

Specificații

tehnologiile de bază XMPP sunt definite în două RFC-uri publicat de IETF:

  • RFC 6120: XMPP Core
  • RFC 6121: XMPP IM
  • RFC 7622: formatul adresei XMPP

primele RFC-uri XMPP (RFC 3920 și RFC 3921) au fost produse de grupul de lucru XMPP al IETF în octombrie 2004. În 2011 au fost revizuite, rezultând specificațiile actuale.

implementări

există multe implementări ale specificațiilor XMPP de bază. Consultați următoarele pagini pentru detalii:

  • clienți
  • Servere
  • biblioteci de coduri

Jingle

în esență, Jingle oferă o modalitate pentru clienții Jabber de a configura, gestiona și distruge sesiunile multimedia. Astfel de sesiuni pot suporta o gamă largă de tipuri de aplicații (cum ar fi chat vocal, chat video și transfer de fișiere) și pot utiliza o gamă largă de metode de transport media (cum ar fi TCP, UDP, RTP sau chiar XMPP în bandă). Semnalizarea pentru a stabili o sesiune Jingle este trimisă prin XMPP și, de obicei, media este trimisă direct peer-to-peer sau printr-un releu media. Jingle oferă un cadru conectabil atât pentru tipurile de aplicații, cât și pentru transporturile media; în cazul chatului vocal și video, o negociere Jingle are ca rezultat, de obicei, utilizarea protocolului de Transport în timp real (RTP) ca transport media și, prin urmare, este compatibil cu tehnologiile multimedia existente, cum ar fi protocolul de inițiere a sesiunii (SIP). Mai mult, semantica semnalizării Jingle a fost concepută pentru a fi în concordanță atât cu Sip, cât și cu Protocolul de descriere a sesiunii (SDP), făcând astfel simplă furnizarea de gateway-uri de semnalizare între rețelele XMPP și rețelele SIP.

Specificații

Jingle este definit într-un număr de specificații:

  • XEP-0166: Jingle
  • XEP-0167: Jingle sesiuni RTP
  • XEP-0176: Jingle Ice-UDP metoda de Transport
  • XEP-0177: Jingle prime UDP metoda de Transport
  • XEP-0181: Jingle DTMF
  • XEP-0234: transfer de fișiere Jingle

implementări

notă: multe dintre următoarele implementări acceptă protocolul Google Talk mai vechi și sunt actualizate pentru a sprijini jingle așa cum este definit în specificațiile; contactați dezvoltatorii proiectului pentru detalii.

clienți

  • Coccinella
  • Gajim
  • Jitsi (denumit anterior Comunicator SIP)
  • Movim
  • Pandion
  • Pidgin (denumit anterior Gaim)
  • psi
  • telepatie
  • Yate

biblioteci

  • Libjingle (C/C++)
  • Smack (java)
  • telepatie gabble (c)
  • alina (c++)

manageri de apel / Servere VoIP

  • asterisc
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC este o extensie XMPP pentru schimbul de informații multi-partid similar cu Internet Relay Chat (IRC), prin care mai mulți utilizatori XMPP pot face schimb de mesaje în contextul unei camere sau canal. În plus față de caracteristicile standard ale camerei de chat, cum ar fi subiecte de cameră și invitații, protocolul definește un model puternic de control al camerei, inclusiv capacitatea de a lovi cu piciorul și de a interzice utilizatorii, de a numi moderatori și administratori de cameră, de a solicita calitatea de membru sau parole pentru a se alătura camerei etc. Deoarece camerele MUC se bazează pe XMPP, ele pot fi folosite pentru a schimba nu numai corpuri de mesaje text, ci și o mare varietate de sarcini utile XML.

Specificații

MUC este definit într-o specificație primară (XEP-0045) și în mai multe specificații auxiliare:

  • XEP-0045: Chat Multi-utilizator
  • XEP-0249: invitații directe MUC
  • XEP-0272: Jingle multipartit

implementări

Servere-următoarele servere XMPP includ suport încorporat pentru MUC:

  • ejabberd
  • Jabber XCP
  • m-Link
  • MongooseIM
  • Openfire
  • prosodie
  • Tigase

componente externe – următoarele componente independente pot fi utilizate cu o mare varietate de servere XMPP:

  • mu-conferință
  • palaver

clienți

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • PSI

biblioteci

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

PubSub

PubSub este o extensie de protocol pentru funcționalitatea generică publish-subscribe, specificată în XEP-0060. Protocolul permite entităților XMPP să creeze noduri (subiecte) la un serviciu pubsub și să publice informații la acele noduri; o notificare de eveniment (cu sau fără sarcină utilă) este apoi difuzată tuturor entităților care s-au abonat la nod. Prin urmare, Pubsub aderă la modelul clasic de proiectare a observatorilor și poate servi drept bază pentru o mare varietate de aplicații, inclusiv fluxuri de știri, sindicalizare de conținut, prezență bogată, geolocalizare, sisteme de flux de lucru, sisteme de gestionare a rețelei și orice altă aplicație care necesită notificări de evenimente. Protocolul de evenimente personale (Pep), specificat în XEP-0163, oferă un profil conștient de prezență al PubSub care permite JabberID fiecărui utilizator să funcționeze ca un serviciu virtual pubsub pentru prezență bogată, microblogging, rețele sociale și interacțiuni în timp real.

Specificații

PubSub este definit în mai multe specificații:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Personal Eventing Protocol
  • XEP-0248: PubSub Collection Nodes

Payloads

PubSub și Pep sunt „payload-agnostic” — le puteți folosi ca transporturi neutre pentru o mare varietate de formate de date. Unele dintre cele mai populare sarcini utile sunt enumerate mai jos, în special pentru prezența bogată legată de utilizatorii IM:

  • activități
  • Atom / RSS notificări
  • Avatare
  • Chatroom vizite
  • activități de jocuri
  • Geolocalizare
  • stări
  • melodii muzicale
  • activități TV/video
  • vizite pe site

implementări

Servere – următoarele servere XMPP includ suport încorporat pentru Pubsub sau Pep:

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

Componente Server

  • Idavoll

clienți

  • Gajim
  • MOVIM
  • PSI

3.4 biblioteci

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

BOSH

BOSH este „fluxuri bidirecționale peste HTTP sincron”, o tehnologie pentru comunicare bidirecțională prin Protocolul de transfer hipertext (HTTP). BOSH emulează multe dintre primitive de transport care sunt familiare din Protocolul de control al transmisiei (TCP). Pentru aplicațiile care necesită atât comunicații „push”, cât și „pull”, BOSH este semnificativ mai eficient în lățime de bandă și mai receptiv decât majoritatea celorlalte protocoale de transport bidirecționale bazate pe HTTP și tehnicile cunoscute sub numele de AJAX. BOSH atinge această eficiență și latență scăzută prin evitarea interogării HTTP, totuși o face fără a recurge la răspunsuri HTTP chunked așa cum se face în tehnica cunoscută sub numele de cometă. Până în prezent, BOSH a fost utilizat în principal ca transport pentru traficul schimbat între clienții Jabber/XMPP și servere (de exemplu, pentru a facilita conexiunile de la Clienții web și de la clienții mobili în rețele intermitente). Cu toate acestea, BOSH nu este legat exclusiv de XMPP și poate fi utilizat și pentru alte tipuri de trafic.

specificații BOSH este definit în două specificații:

  • XEP-0124: fluxuri bidirecționale peste HTTP sincron
  • XEP-0206: XMPP peste BOSH

implementări

Servere următoarele servere XMPP includ suport încorporat pentru BOSH:

  • ejabberd
  • Jabber XCP
  • m-Link
  • MongooseIM
  • Openfire
  • prosodie
  • Tigase

manageri de conexiune

următorii manageri de conexiune XMPP independenți pot fi utilizați cu o mare varietate de servere XMPP:

  • JabberHTTPBind
  • Punjab
  • node-XMPP-bosh
  • rhb

clienți

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

biblioteci

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

Lasă un răspuns

Adresa ta de email nu va fi publicată.