XMPP

XMPP is het uitbreidbare Messaging and Presence Protocol, een set van open technologieën voor instant messaging, aanwezigheid, multi-party chat, spraak-en videogesprekken, samenwerking, lichtgewicht middleware, inhoudssyndicatie en gegeneraliseerde routering van XML-gegevens.

XMPP werd oorspronkelijk ontwikkeld in de jabber open-source gemeenschap om een open, gedecentraliseerd alternatief te bieden voor de gesloten instant messaging diensten op dat moment. XMPP biedt verschillende belangrijke voordelen ten opzichte van dergelijke diensten:

  • Open-de XMPP-protocollen zijn gratis, open, openbaar en gemakkelijk te begrijpen; daarnaast bestaan er meerdere implementaties in de vorm clients, servers, server componenten en code bibliotheken.

  • standaard – de Internet Engineering Task Force (IETF) heeft de core XML streaming protocollen geformaliseerd als een goedgekeurde instant messaging en presence technologie. De XMPP-specificaties werden gepubliceerd als RFC 3920 en RFC 3921 in 2004, en de XMPP Standards Foundation blijft veel XMPP-Uitbreidingsprotocollen publiceren. In 2011 werden de core RFC ‘ s herzien, wat resulteerde in de meest up-to-date SPECIFICATIES (RFC 6120, RFC 6121 en RFC 7622).

  • bewezen-de eerste Jabber / XMPP-technologieën werden ontwikkeld door Jeremie Miller in 1998 en zijn nu vrij stabiel; honderden ontwikkelaars werken aan deze technologieën, er zijn tienduizenden XMPP-servers draaien op het Internet vandaag, en miljoenen mensen gebruiken XMPP voor instant messaging via openbare diensten zoals Google Talk en XMPP implementaties bij organisaties over de hele wereld.

  • gedecentraliseerd-de architectuur van het XMPP-netwerk is vergelijkbaar met e-mail; als gevolg daarvan kan iedereen zijn eigen XMPP-server draaien, waardoor individuen en organisaties de controle over hun communicatie-ervaring kunnen nemen.

  • Secure-elke XMPP-server kan worden geà soleerd van het openbare netwerk (bijvoorbeeld op een bedrijfsintranet) en robuuste beveiliging met SASL en TLS is ingebouwd in de kern XMPP-SPECIFICATIES. Daarnaast werkt de XMPP developer community actief aan end-to-end encryptie om de veiligheidsbalk nog verder te verhogen.

  • Extensible – met behulp van de kracht van XML, iedereen kan bouwen aangepaste functionaliteit op de top van de kernprotocollen; om interoperabiliteit te behouden, gemeenschappelijke extensies worden gepubliceerd in de XEP-serie, maar een dergelijke publicatie is niet vereist en organisaties kunnen hun eigen private extensies te behouden indien gewenst.

  • flexibel-XMPP-toepassingen buiten IM omvatten netwerkbeheer, Content syndication, collaboration tools, file sharing, gaming, remote systemen monitoring, web services, lichtgewicht middleware, cloud computing, en nog veel meer.

  • divers-een breed scala aan bedrijven en open-source projecten gebruiken XMPP om real-time applicaties en diensten te bouwen en te implementeren; je zult nooit “opgesloten” worden wanneer je XMPP-technologieën gebruikt.

deze pagina biedt een inleiding tot verschillende XMPP-technologieën, waaronder links naar SPECIFICATIES, implementaties, tutorials en speciale discussielocaties.

belangrijke XMPP-technologieën:

  • Core — information about the core XMPP technologies for XML streaming
  • Jingle — SIP-compatibele multimedia signalisatie voor spraak, video, bestandsoverdracht en andere toepassingen
  • Multi-User Chat — flexible, multi-party communication
  • PubSub — alerts and notifications for data syndication, rich presence, and more
  • BOSH — an HTTP binding for XMPP (and other) traffic

core

XMPP is een technologie voor het streamen van XML over een netwerk. Het protocol, dat voortkwam uit de jabber open-source gemeenschap in 1999, was oorspronkelijk ontworpen om een open, veilig, gedecentraliseerd alternatief te bieden voor consumentengerichte instant messaging (IM) diensten zoals ICQ, AIM, en MSN. De kerntechnologieën werden geformaliseerd onder de naam Extensible Messaging and Presence Protocol (XMPP) op de IETF in 2004. Deze kerntechnologieën omvatten:

  • De basis van XML-streaming laag
  • Kanaals codering met behulp van het Transport Layer Security (TLS)
  • Sterke authenticatie met behulp van de Simple Authentication and Security Layer (SASL)
  • Gebruik van UTF-8 voor de volledige Unicode ondersteuning, met inbegrip van volledig geïnternationaliseerd adressen
  • Ingebouwde informatie over de beschikbaarheid van het netwerk (“presence”)
  • Aanwezigheid abonnementen voor twee-weg autorisatie
  • Aanwezigheid ingeschakeld contact lijsten (“roosters”)

Specificaties

De kern XMPP technologieën zijn gedefinieerd in twee Rfc ‘ s gepubliceerd door de IETF:

  • RFC 6120: XMPP Core
  • RFC 6121: XMPP IM
  • RFC 7622: XMPP adresformaat

de eerste XMPP RFC ‘ s (RFC 3920 en RFC 3921) werden geproduceerd door de XMPP-werkgroep van de IETF in oktober 2004. In 2011 werden ze herzien, wat resulteerde in de huidige specificaties.

implementaties

er zijn veel implementaties van de kern XMPP-SPECIFICATIES. Zie de volgende pagina ‘ s voor details:

  • Clients
  • Servers
  • codebibliotheken

Jingle

in wezen biedt Jingle een manier voor Jingle-clients om multimediasessies in te stellen, te beheren en te slopen. Dergelijke sessies kunnen een breed scala aan applicatietypen ondersteunen (zoals voice chat, videochat en bestandsoverdracht) en een breed scala aan media-transportmethoden gebruiken (zoals TCP, UDP, RTP of zelfs in-band XMPP zelf). De signalisatie om een Jingle sessie tot stand te brengen wordt verzonden via XMPP, en meestal wordt de media direct peer-to-peer of via een Media relay verzonden. Jingle biedt een pluggable framework voor zowel applicatietypen als mediatransporten; in het geval van spraak-en videochat resulteert een jingle-onderhandeling meestal in het gebruik van het Real-time Transport Protocol (RTP) als het mediatransport en is dus compatibel met bestaande multimediatechnologieën zoals het Session Initiation Protocol (SIP). Bovendien is de semantiek van Jingle-signalering ontworpen om consistent te zijn met zowel SIP als het Session Description Protocol (SDP), waardoor het eenvoudig is om signaalgateways te bieden tussen XMPP-netwerken en SIP-netwerken.

Specificaties

Jingle is gedefinieerd in een aantal specificaties:

  • XEP-0166: Jingle
  • XEP-0167: Jingle RTP Sessies
  • XEP-0176: Jingle ICE-UDP Transport Methode
  • XEP-0177: Jingle Raw UDP Transport Methode
  • XEP-0181: Jingle DTMF
  • XEP-0234: Jingle Bestands Overdracht

Implementaties

Opmerking: Veel van de volgende implementaties ondersteunen de oudere Google Talk protocol en worden opgewaardeerd tot ondersteuning Jingle zoals het is gedefinieerd in de specificaties; neem contact op met de projectontwikkelaars voor meer informatie.

Klanten

  • Coccinella
  • Gajim
  • Jitsi (voorheen genaamd SIP-Communicator)
  • Movim
  • Pandion
  • Pidgin (voorheen Gaim)
  • Psi,
  • Telepathy
  • Yate

Bibliotheken

  • libjingle (C/C++)
  • Smakken (Java)
  • Telepathy Gabble (C)
  • yjingle C++)

De Call Managers / VoIP-Servers

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC is een XMPP-extensie voor meerpartijeninformatie-uitwisseling vergelijkbaar met Internet Relay Chat (IRC), waarbij meerdere XMPP-gebruikers berichten kunnen uitwisselen in de context van een kamer of kanaal. In aanvulling op standaard chatroom functies zoals room onderwerpen en uitnodigingen, het protocol definieert een sterke kamer controle model, met inbegrip van de mogelijkheid om kick en ban gebruikers, om de naam van de kamer moderators en beheerders, lidmaatschap of wachtwoorden vereisen om de kamer, enz. Omdat MUC-kamers gebaseerd zijn op XMPP, kunnen ze worden gebruikt om niet alleen tekstberichten uit te wisselen, maar ook om een breed scala aan XML-payloads uit te wisselen.

SPECIFICATIES

MUC is gedefinieerd in één primaire specificatie (XEP-0045) en verscheidene aanvullende specificaties:

  • XEP-0045: Multi-User Chat
  • XEP-0249: directe MUC-uitnodigingen
  • XEP-0272: Multiparty Jingle

implementaties

Servers-de volgende XMPP-servers bevatten ingebouwde ondersteuning voor MUC:

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

Externe Onderdelen – de volgende losse onderdelen kan worden gebruikt met een breed scala van XMPP-servers:

  • mu-conference
  • gedoe

Klanten

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • Psi,

Bibliotheken

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

PubSub

PubSub is een protocoluitbreiding voor generieke publish-subscribe functionaliteit, gespecificeerd in XEP-0060. Het protocol stelt XMPP-entiteiten in staat om knooppunten (onderwerpen) te maken op een pubsub-service en informatie te publiceren op die knooppunten; een gebeurtenismelding (met of zonder payload) wordt vervolgens uitgezonden naar alle entiteiten die zich op het knooppunt hebben geabonneerd. Pubsub houdt zich daarom aan het klassieke observator-ontwerppatroon en kan dienen als de basis voor een breed scala aan toepassingen, waaronder nieuwsfeeds, inhoudssyndicatie, rijke aanwezigheid, geolocatie, workflowsystemen, netwerkbeheersystemen en elke andere toepassing die gebeurtenismeldingen vereist. Het personal eventing protocol (PEP), gespecificeerd in XEP-0163, biedt een aanwezigheidsbewust profiel van PubSub waarmee JabberID van elke gebruiker kan functioneren als een virtuele pubsub-service voor rijke aanwezigheid, microblogging, sociale netwerken en real-time interacties.

SPECIFICATIES

PubSub is gedefinieerd in verschillende specificaties:

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

Payloads

PubSub en PEP zijn “payload-agnostisch” — u kunt ze gebruiken als neutrale transporten voor een breed scala aan dataformaten. Enkele van de meer populaire payloads zijn hieronder vermeld, vooral voor rijke aanwezigheid in verband met IM-gebruikers:

  • activiteiten
  • Atom / RSS – meldingen
  • Avatars
  • Chatruimtebezoeken
  • spelactiviteiten
  • geolocatie
  • stemmingen
  • muziek Tunes
  • TV/Video-activiteiten
  • websitebezoeken

implementaties

servers-de volgende XMPP-servers bevatten ingebouwde ondersteuning voor pubsub of Pep:

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

Server-Componenten

  • Idavoll

Klanten

  • Gajim
  • Movim
  • Psi

3.4 Bibliotheken

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

BOSH

BOSH is “Bidirectionele-streams Over Synchrone HTTP”, een technologie voor twee-weg communicatie via het Hypertext Transfer Protocol (HTTP). BOSH emuleert veel van de transport primitieven die bekend zijn van het Transmission Control Protocol (TCP). Voor toepassingen die zowel “push” – als “pull” – communicatie vereisen, is BOSH beduidend meer bandbreedte-efficiënt en responsief dan de meeste andere bidirectionele HTTP-gebaseerde transportprotocollen en de technieken die bekend staan als AJAX. BOSH bereikt deze efficiëntie en lage latency door het vermijden van HTTP polling, maar het doet dit zonder toevlucht te nemen tot chunked HTTP reacties zoals wordt gedaan in de techniek bekend als Comet. Tot op heden wordt BOSH voornamelijk gebruikt als transport voor verkeer dat wordt uitgewisseld tussen Jabber/XMPP-clients en servers (bijvoorbeeld om verbindingen van webclients en van mobiele clients op intermitterende netwerken te vergemakkelijken). BOSH is echter niet alleen gebonden aan XMPP en kan ook worden gebruikt voor andere soorten verkeer.

SPECIFICATIES BOSH is gedefinieerd in twee specificaties:

  • XEP-0124: bidirectionele-streams over synchrone HTTP
  • XEP-0206: XMPP over BOSH

implementaties

Servers de volgende XMPP-servers bevatten ingebouwde ondersteuning voor BOSH:

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

Connection Managers

de volgende standalone XMPP connection managers kunnen worden gebruikt met een breed scala aan XMPP-servers:

  • JabberHTTPBind
  • Punjab
  • node-xmpp-bosch
  • rhb

Klanten

  • Adium
  • Gajim
  • JWChat
  • Pidgin
  • Soashable
  • SparkWeb
  • Swift
  • Tigase Messenger
  • Tigase Minichat

Bibliotheken

  • emite (gwt)
  • gloox (C++)
  • JSJaC (JavaScript)
  • strophe (C of JavaScript)
  • Swiften (C++)
  • XIFF (Flash)
  • XMPP4GWT (gwt)
  • xmpp4js (JavaScript)
  • XMPP4R (Ruby)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.