XMPP

XMPP is the Extensible Messaging and Presence Protocol, a set of open technologies for instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data.

XMPP foi originalmente desenvolvido na comunidade de código aberto Jabber para fornecer uma alternativa aberta e descentralizada aos Serviços de mensagens instantâneas fechadas na época. XMPP oferece várias vantagens fundamentais sobre esses serviços:

  • Open-os protocolos XMPP são livres, abertos, públicos e facilmente compreensíveis; além disso, várias implementações existem na forma de clientes, servidores, componentes de servidor e bibliotecas de código.

  • Standard-A Internet Engineering Task Force (IETF) formalizou os protocolos de streaming XML como uma tecnologia aprovada de mensagens instantâneas e presença. As especificações do XMPP foram publicadas como RFC 3920 e RFC 3921 em 2004, e a XMPP Standards Foundation continua a publicar muitos protocolos de extensão do XMPP. Em 2011, o núcleo RFCs foi revisto, resultando nas especificações mais atualizadas (RFC 6120, RFC 6121 e RFC 7622).

  • Provou — o primeiro Jabber/XMPP tecnologias foram desenvolvidas por Jeremie Miller, em 1998, e hoje são bastante estáveis; centenas de desenvolvedores estão trabalhando com essas tecnologias, há dezenas de milhares de XMPP servidores em execução no Internet hoje, e milhões de pessoas usam o XMPP para mensagens instantâneas através de serviços públicos, tais como Google Talk e XMPP implementações em organizações de todo o mundo.

  • Descentralização — a arquitetura da rede XMPP é semelhante ao e-mail; como resultado, qualquer pessoa pode executar seu próprio servidor XMPP, permitindo que indivíduos e organizações para assumir o controle de sua experiência de comunicação.

  • Secure-qualquer servidor XMPP pode ser isolado da rede pública (por exemplo, em uma intranet da empresa) e segurança robusta usando SASL e TLS foi incorporada nas especificações do núcleo XMPP. Além disso, a comunidade de desenvolvedores XMPP está trabalhando ativamente na criptografia de ponta a ponta para aumentar ainda mais a barra de segurança.

  • Extensível — usando o poder do XML, qualquer um pode criar a funcionalidade personalizada no topo do núcleo de protocolos; para manter a interoperabilidade, extensões comuns são publicados no XEP série, mas tal publicação não é obrigatória e as organizações podem manter suas próprias extensões particular, se assim o desejar.

  • aplicações flexíveis-XMPP além de IM incluem gerenciamento de rede, sindicação de conteúdo, Ferramentas de colaboração, compartilhamento de arquivos, Jogos, monitoramento de sistemas remotos, serviços web, middleware leve, computação em nuvem, e muito mais.

  • diverso-uma ampla gama de empresas e projetos de código aberto usam o XMPP para construir e implantar aplicações e serviços em tempo real; você nunca ficará “bloqueado” quando usar tecnologias XMPP.

esta página fornece uma introdução a várias tecnologias XMPP, incluindo links para especificações, implementações, tutoriais e locais de discussão de propósito especial.

Key XMPP technologies:

  • Core — informações sobre o núcleo XMPP tecnologias para um feed XML
  • Jingle — SIP-multimédia compatíveis sinalização de voz, vídeo, transferência de arquivos, aplicativos e outros.
  • Multi-Usuário de bate-Papo — flexível, multi-festa de comunicação
  • Minha — alertas e notificações para os dados de sindicalização, de presença, e muito mais
  • BOSH — uma ligação HTTP para XMPP (e outros) tráfego

Core

Em seu núcleo, XMPP é uma tecnologia para transmissão de XML através de uma rede. O protocolo, que surgiu a partir da Comunidade Jabber open-source em 1999, foi originalmente projetado para fornecer uma alternativa aberta, segura e descentralizada para os Serviços de mensagens instantâneas orientadas ao consumidor (IM), como ICQ, AIM, e MSN. As tecnologias principais foram formalizadas sob o nome Extensible Messaging and Presence Protocol (XMPP) no IETF em 2004. Estas tecnologias de base incluem::

  • O XML base de streaming camada
  • criptografia de Canal usando o Transport Layer Security (TLS)
  • Forte de autenticação usando o Simple Authentication and Security Layer (SASL)
  • Uso de UTF-8 para total suporte a Unicode, incluindo totalmente internacionalizado endereços
  • informações internas sobre a disponibilidade da rede (“presença”)
  • as assinaturas de Presença por duas vias de autorização
  • Presença-habilitado listas de contatos (“listas”)

Especificações

O núcleo XMPP tecnologias são definidas em dois RFCs publicada pela IETF:

  • RFC 6120: XMPP Core
  • RFC 6121: XMPP IM
  • RFC 7622: XMPP Formato de Endereço de

O primeiro XMPP RFCs (RFC 3920 e RFC 3921) foram produzidos pelo IETF, XMPP Grupo de Trabalho em outubro de 2004. Em 2011 foram revisados, resultando nas especificações atuais.

Implementations

There are many implementations of the core XMPP specifications. Veja as páginas seguintes para mais detalhes:

  • Clientes
  • Servidores
  • Bibliotecas de Código

Jingle

Em essência, Jingle fornece uma maneira para os clientes Jabber para configurar, gerenciar e derrubar sessões multimídia. Tais sessões podem suportar uma ampla gama de tipos de aplicações (como chat de voz, chat de vídeo e transferência de arquivos) e usar uma ampla gama de métodos de transporte de mídia (como TCP, UDP, RTP, ou até mesmo em banda XMPP em si). A sinalização para estabelecer uma sessão de Jingle é enviada através do XMPP, e normalmente a mídia é enviada diretamente peer-to-peer ou através de um retransmissor de mídia. O Jingle fornece um enquadramento propício tanto para os tipos de aplicações como para o transporte de meios de comunicação; no caso do chat de voz e vídeo, uma negociação de Jingle geralmente resulta na utilização do Protocolo de transporte em tempo Real (RTP) como o transporte de meios de comunicação e, portanto, é compatível com as tecnologias multimídia existentes, como o protocolo de iniciação de sessão (SIP). Além disso, a semântica da sinalização Jingle foi projetada para ser consistente com o SIP e o protocolo de descrição de sessão (SDP), tornando-se assim simples para fornecer portais de sinalização entre redes XMPP e redes SIP.

Especificações

Jingle é definido em um número de especificações:

  • XEP-0166: Jingle
  • XEP-0167: Jingle RTP Sessões
  • XEP-0176: Jingle de GELO de Transporte UDP Método
  • XEP-0177: Jingle Matérias de Transporte UDP Método
  • XEP-0181: Jingle DTMF
  • XEP-0234: Jingle de Transferência de Arquivo

Implementações

Nota: Muitos dos seguintes implementações de apoio a idosos Google Talk protocolo e estão a ser actualizados para suportar o Jingle como é definido nas especificações; contacte os programadores do projecto para mais detalhes.

Clientes

  • Coccinella
  • Gajim
  • Jitsi (anteriormente chamado de SIP Communicator)
  • Movim
  • Pandion
  • Pidgin (antes chamada de Gaim)
  • Psi
  • Telepatia
  • Yate

Bibliotecas

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

Chamar os Gestores / Servidores VoIP

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-Usuário de bate-Papo (MUC)

MUC é um XMPP extensão para o intercâmbio de informações multipartidárias semelhante ao Internet Relay Chat (IRC), através do qual vários usuários do XMPP podem trocar mensagens no contexto de uma sala ou canal. Além de características padrão de sala de chat, como tópicos de sala e convites, o protocolo define um modelo de controle de sala forte, incluindo a capacidade de chutar e banir os usuários, para nomear moderadores de sala e administradores, para exigir membros ou senhas, a fim de se juntar à sala, etc. Como as salas de MUC são baseadas no XMPP, elas podem ser usadas para trocar não apenas corpos de mensagem de texto simples, mas uma grande variedade de cargas XML.

Especificações

MUC é definida em uma primeira especificação (XEP-0045) e vários auxiliares especificações:

  • XEP-0045: Multi-Usuário de bate-Papo
  • XEP-0249: Direto MUC Convites
  • XEP-0272: Conferência Jingle

Implementações

Servidores – os seguintes servidores XMPP inclui suporte interno para a MUC:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosódia
  • Tigase

Componentes Externos – os seguintes componentes autônomos pode ser usado com uma grande variedade de servidores XMPP:

  • mu-conferência
  • palaver

Clientes

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

Bibliotecas

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

Minha

Objeto é uma extensão do protocolo genérico de publish-subscribe funcionalidade, especificado no XEP-0060. O protocolo permite às entidades XMPP criar nós (tópicos) em um serviço pubsub e publicar informações nesses nós; uma notificação de evento (com ou sem carga útil) é então transmitida para todas as entidades que se subscreveram ao nó. O Pubsub, portanto, adere ao padrão clássico de design Observer e pode servir como base para uma grande variedade de aplicações, incluindo feeds de notícias, sindicação de conteúdo, presença rica, geolocalização, sistemas de fluxo de trabalho, Sistemas de gerenciamento de rede, e qualquer outra aplicação que requer notificações de eventos. O personal eventing protocol (PEP), especificado no XEP-0163, fornece um perfil consciente de presença do PubSub que permite que o JabberID de cada usuário funcione como um serviço de pubsub virtual para a presença rica, microblogging, redes sociais e interações em tempo real.

Especificações

Objeto é definida de várias especificações:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Pessoal de Eventos de Protocolo
  • XEP-0248: Minha Coleção de Nós

Cargas

Objeto e o PAP estão “carga-agnóstico” — você pode usá-los como neutro transporta para uma ampla variedade de formatos de dados. Algumas das cargas mais populares estão listadas abaixo, especialmente para a rica presença relacionada com usuários de IM:

  • Actividades
  • Atom / RSS Notificações
  • Avatares
  • Sala de Visitas
  • Actividades de Jogo
  • Geolocalização
  • Humor
  • Música > Músicas
  • TV/Vídeo Atividades de
  • Visitas ao Site

Implementações

Servidores com os seguintes servidores XMPP inclui suporte interno para Minha ou PEP:

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

Componentes de Servidor

  • Idavoll

Clientes

  • Gajim
  • Movim
  • Psi

3.4 Bibliotecas

  • estrofe (C ou JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH é “Bidirecional-fluxos Através de HTTP Síncrono”, uma tecnologia para a comunicação de duas-vias sobre o Protocolo de Transferência de Hipertexto (HTTP). BOSH emula muitos dos primitivos de transporte que são familiares do Protocolo de controle de transmissão (TCP). Para aplicações que requerem comunicações “push” e “pull”, BOSH é significativamente mais eficiente em largura de banda e sensível do que a maioria dos outros protocolos de transporte baseados em HTTP bidirecionais e as técnicas conhecidas como AJAX. BOSH atinge esta eficiência e baixa latência, evitando pesquisas HTTP, no entanto, ele faz isso sem recorrer a respostas HTTP chunked como é feito na técnica conhecida como Comet. Até à data, a BOSH tem sido utilizada principalmente como um transporte para o tráfego trocado entre clientes e servidores Jabber/XMPP (por exemplo, para facilitar conexões de clientes web e de clientes móveis em redes intermitentes). No entanto, BOSH não está amarrado apenas ao XMPP e pode ser usado para outros tipos de tráfego, também.

Especificações BOSH é definido em duas especificações:

  • XEP-0124: Bidirecional-fluxos Através de HTTP Síncrono
  • XEP-0206: XMPP Sobre BOSH

Implementações

Servidores As seguintes servidores XMPP inclui suporte interno para BOSH:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosódia
  • Tigase

Gerenciadores de conexões

O seguinte autônomo XMPP gerenciadores de conexão pode ser utilizado com uma ampla variedade de servidores XMPP:

  • JabberHTTPBind
  • Punjab
  • nó-xmpp-bosh
  • rhb

Clientes

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

Bibliotecas

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

Deixe uma resposta

O seu endereço de email não será publicado.