XMPP

XMPP è il protocollo Extensible Messaging and Presence, un insieme di tecnologie aperte per la messaggistica istantanea, la presenza, la chat multi-party, le chiamate vocali e video, la collaborazione, il middleware leggero, la syndication dei contenuti e il routing generalizzato dei dati XML.

XMPP è stato originariamente sviluppato nella comunità open-source Jabber per fornire un’alternativa aperta e decentralizzata ai servizi di messaggistica istantanea chiusi in quel momento. XMPP offre diversi vantaggi chiave rispetto a tali servizi:

  • Open-i protocolli XMPP sono liberi, aperti, pubblici e facilmente comprensibili; inoltre, esistono più implementazioni sotto forma di client, server, componenti server e librerie di codice.

  • Standard-l’Internet Engineering Task Force (If) ha formalizzato i protocolli di streaming XML di base come tecnologia di messaggistica istantanea e presenza approvata. Le specifiche XMPP sono state pubblicate come RFC 3920 e RFC 3921 nel 2004 e la XMPP Standards Foundation continua a pubblicare molti protocolli di estensione XMPP. Nel 2011 le RFC principali sono state riviste, risultando nelle specifiche più aggiornate (RFC 6120, RFC 6121 e RFC 7622).

  • Provato — il primo Jabber/XMPP tecnologie sono state sviluppate da Jeremie Miller nel 1998 e sono ormai abbastanza stabile; centinaia di sviluppatori sta lavorando su queste tecnologie, ci sono decine di migliaia di XMPP server in esecuzione su Internet oggi, e milioni di persone utilizzano il protocollo XMPP per la messaggistica istantanea attraverso servizi pubblici come Google Talk e JABBER distribuzioni di organizzazioni in tutto il mondo.

  • Decentralizzata-l’architettura della rete XMPP è simile alla posta elettronica; di conseguenza, chiunque può eseguire il proprio server XMPP, consentendo a individui e organizzazioni di prendere il controllo della propria esperienza di comunicazione.

  • Sicuro: qualsiasi server XMPP può essere isolato dalla rete pubblica (ad esempio, su una intranet aziendale) e la sicurezza robusta utilizzando SASL e TLS è stata integrata nelle specifiche XMPP principali. Inoltre, la comunità di sviluppatori XMPP sta lavorando attivamente alla crittografia end-to-end per aumentare ulteriormente la barra di sicurezza.

  • Extensible-utilizzando la potenza di XML, chiunque può costruire funzionalità personalizzate in cima ai protocolli di base; per mantenere l’interoperabilità, estensioni comuni sono pubblicati nella serie XEP, ma tale pubblicazione non è necessaria e le organizzazioni possono mantenere le proprie estensioni private, se lo si desidera.

  • Flessibile-Le applicazioni XMPP oltre IM includono la gestione della rete, la syndication dei contenuti, gli strumenti di collaborazione, la condivisione di file, i giochi, il monitoraggio dei sistemi remoti, i servizi Web, il middleware leggero, il cloud computing e molto altro.

  • Diverse-una vasta gamma di aziende e progetti open-source utilizzano XMPP per creare e distribuire applicazioni e servizi in tempo reale; non sarai mai “bloccato” quando utilizzi le tecnologie XMPP.

Questa pagina fornisce un’introduzione a varie tecnologie XMPP, inclusi collegamenti a specifiche, implementazioni, tutorial e sedi di discussione per scopi speciali.

Tecnologie chiave XMPP:

  • > Core — informazioni su core XMPP tecnologie XML streaming
  • Jingle — SIP-multimediali compatibili segnalazione per voce, video, file transfer, e altre applicazioni
  • Chat Multi-Utente, flessibile, multi-partito di comunicazione
  • PubSub — avvisi e notifiche per i dati di syndication, una ricca presenza, e più
  • BOSCH — HTTP vincolante per XMPP (e altri) traffico

> Core

Al suo interno, XMPP è una tecnologia per lo streaming XML su una rete. Il protocollo, che è emerso dalla comunità open-source Jabber nel 1999, è stato originariamente progettato per fornire un’alternativa aperta, sicura e decentralizzata ai servizi di messaggistica istantanea (IM) orientati al consumatore come ICQ, AIM e MSN. Le tecnologie di base sono state formalizzate sotto il nome di Extensible Messaging and Presence Protocol (XMPP) all’ETF nel 2004. Queste tecnologie di base includono:

  • base di XML in streaming strato
  • la crittografia del Canale utilizzando TLS (Transport Layer Security)
  • l’autenticazione Forte che utilizza l’Autenticazione Semplice e di Livello di Sicurezza (SASL)
  • Uso di UTF-8 per il supporto Unicode, compreso pienamente internazionalizzato indirizzi
  • Built-in informazioni sulla disponibilità della rete (“presenza”)
  • sottoscrizioni di Presenza per due vie di autorizzazione
  • Presenza abilitato liste di contatti (“roster”)

Specifiche

Il core XMPP tecnologie sono definiti in due Rfc pubblicato dall’ETf:

  • RFC 6120: XMPP Core
  • RFC 6121: XMPP IM
  • RFC 7622: XMPP Address Format

I primi RFC XMPP (RFC 3920 e RFC 3921) sono stati prodotti dal gruppo di lavoro XMPP dell’If nell’ottobre 2004. Nel 2011 sono stati rivisti, con conseguente specifiche attuali.

Implementazioni

Ci sono molte implementazioni delle specifiche core XMPP. Vedere le seguenti pagine per i dettagli:

  • Client
  • Server
  • Librerie di codice

Jingle

In sostanza, Jingle fornisce un modo per i client Jabber per impostare, gestire e abbattere sessioni multimediali. Tali sessioni possono supportare una vasta gamma di tipi di applicazioni (come chat vocale, video chat e trasferimento di file) e utilizzare una vasta gamma di metodi di trasporto dei media (come TCP, UDP, RTP o anche in-band XMPP stesso). La segnalazione per stabilire una sessione di Jingle viene inviata su XMPP e in genere il supporto viene inviato direttamente peer-to-peer o tramite un media relay. Jingle fornisce un framework collegabile sia per i tipi di applicazione che per i trasporti multimediali; nel caso della chat vocale e video, una negoziazione Jingle di solito comporta l’uso del Real-time Transport Protocol (RTP) come trasporto multimediale e quindi è compatibile con le tecnologie multimediali esistenti come il Session Initiation Protocol (SIP). Inoltre, la semantica del Jingle Signalling è stata progettata per essere coerente sia con SIP che con Session Description Protocol (SDP), rendendo così semplice fornire gateway di segnalazione tra reti XMPP e reti SIP.

Specifiche tecniche

Jingle è definito in un certo numero di specifiche:

  • XEP-0166: Jingle
  • XEP-0167: Jingle Sessioni RTP
  • XEP-0176: Jingle di GHIACCIO-Trasporto UDP Metodo
  • XEP-0177: Jingle Raw Trasporto UDP Metodo
  • XEP-0181: Jingle DTMF
  • XEP-0234: Jingle di Trasferimento di File

Implementazioni

Nota: Molti dei seguenti implementazioni assistenza anziani Google Talk protocollo e sono in fase di aggiornamento per il supporto Jingle, come è definito nel capitolato d’oneri; contattare gli sviluppatori del progetto per i dettagli.

Client

  • Coccinella
  • Gajim
  • Jitsi (precedentemente denominato SIP Communicator)
  • Movim
  • Pandion
  • Pidgin (precedentemente denominato Gaim)
  • Psi
  • Telepatia
  • Yate

Librerie

  • libjingle (C/C++)
  • Smack (Java)
  • Telepatia Gabble (C)
  • yjingle (C++)

Call Manager / Server VoIP

  • Asterisco
  • FreeSWITCH
  • Yate

Multi-Utente in Chat (MUC)

MUC è un’estensione XMPP per lo scambio di informazioni multi-parte simile a Internet Relay Chat (IRC), per cui più utenti XMPP possono scambiare messaggi nel contesto di una stanza o canale. Oltre alle funzionalità di chat standard come argomenti e inviti della stanza, il protocollo definisce un modello di controllo della stanza forte, inclusa la possibilità di calciare e vietare gli utenti, nominare moderatori e amministratori della stanza, richiedere l’iscrizione o le password per entrare nella stanza, ecc. Poiché le camere MUC sono basate su XMPP, possono essere utilizzate per scambiare non solo corpi di messaggi in chiaro ma un’ampia varietà di payload XML.

Specifiche tecniche

MUC è definito in una primaria specifica (XEP-0045) e diversi accessori specifiche:

  • XEP-0045: Chat Multi-Utente,
  • XEP-0249: Diretta MUC Inviti
  • XEP-0272: In conferenza Jingle

Implementazioni

Server – il seguente XMPP server include il supporto integrato per MUC:

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

Componenti Esterni – i seguenti autonomo componenti possono essere utilizzati con una vasta gamma di XMPP server:

  • mu-conferenza
  • chiacchiere

Client

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

Librerie

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

PubSub

PubSub è un estensione del protocollo per generico publish-subscribe funzionalità, specificato in XEP-0060. Il protocollo consente alle entità XMPP di creare nodi (argomenti) in un servizio pubsub e pubblicare informazioni su tali nodi; una notifica di evento (con o senza payload) viene quindi trasmessa a tutte le entità che hanno sottoscritto il nodo. Pubsub aderisce quindi al classico modello di progettazione Observer e può servire come base per un’ampia varietà di applicazioni, tra cui feed di notizie, syndication di contenuti, presenza ricca, geolocalizzazione, sistemi di flusso di lavoro, sistemi di gestione della rete e qualsiasi altra applicazione che richiede notifiche di eventi. Il personal Eventing protocol (PEP), specificato in XEP-0163, fornisce un profilo presence-aware di PubSub che consente a JabberID di ogni utente di funzionare come un servizio pubsub virtuale per presenza ricca, microblogging, social networking e interazioni in tempo reale.

Specifiche tecniche

PubSub è definito in diverse specifiche:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Personale Eventing Protocollo
  • XEP-0248: PubSub Collezione di Nodi

Payload

PubSub e PEP sono “payload ” agnostico” — si possono usare come neutro trasporti per un’ampia varietà di formati di dati. Alcuni dei payload più popolari sono elencati di seguito, in particolare per la presenza ricca relativa agli utenti IM:

  • Attività
  • Atom / RSS Notifiche
  • Avatar
  • Chatroom Visite
  • Attività di Gioco
  • Geolocalizzazione
  • Umori
  • Brani Musicali
  • TV/Video Attività
  • Sito

Implementazioni

Server – il seguente XMPP server include il supporto integrato per PubSub o PEP:

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

Componenti

  • Idavoll

Client

  • Gajim
  • Movim
  • Psi

3.4 Librerie

  • strofa (C o JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH è “Bidirezionale streaming Su HTTP Sincrono”, una tecnologia per la comunicazione a due vie su HTTP (Hypertext Transfer Protocol). BOSH emula molte delle primitive di trasporto che sono familiari dal Transmission Control Protocol (TCP). Per le applicazioni che richiedono comunicazioni sia “push” che “pull”, BOSH è significativamente più efficiente in termini di larghezza di banda e reattivo rispetto alla maggior parte degli altri protocolli di trasporto basati su HTTP bidirezionali e alle tecniche note come AJAX. BOSH raggiunge questa efficienza e bassa latenza evitando il polling HTTP, ma lo fa senza ricorrere a risposte HTTP chunked come avviene nella tecnica nota come Comet. Ad oggi, BOSH è stato utilizzato principalmente come trasporto per il traffico scambiato tra client Jabber/XMPP e server (ad esempio, per facilitare le connessioni da client web e da client mobili su reti intermittenti). Tuttavia, BOSH non è legato esclusivamente a XMPP e può essere utilizzato anche per altri tipi di traffico.

Specifiche BOSH è definito in due specifiche:

  • XEP-0124: Bidirezionale-flusso d’HTTP Sincrono
  • XEP-0206: XMPP Su BOSH

Implementazioni

Il seguente Server XMPP server include il supporto integrato per BOSH:

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

gestioni

I seguenti autonomo XMPP gestioni può essere utilizzato con una vasta gamma di XMPP server:

  • JabberHTTPBind
  • Punjab
  • nodo-xmpp-bosh
  • rhb

Client

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

Librerie

  • emite (gwt)
  • gloox (C++)
  • JSJaC (JavaScript)
  • strofa (C o JavaScript)
  • Swiften (C++)
  • XIFF (Flash)
  • XMPP4GWT (gwt)
  • xmpp4js (JavaScript)
  • XMPP4R (Rubino)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.