zoukankan      html  css  js  c++  java
  • XMPP学习——1、介绍

    XMPPExtensible Messaging and Presence Protocol,前称Jabber[1])是一种以XML为基础的开放式实时通信协议,是经由互联网工程工作小组(IETF)通过的互联网标准。XMPP因为被Google Talk应用而被广大网民所接触。

     

    运作方式

    XMPP网络是基于服务器的(即客户端之间彼此不直接交谈),但是也是分散式的。不像AOL实时通或MSN Messenger等服务,XMPP没有中央官方服务器。Jabber.org的公众服务器上有大量的用户,所以有些人误解了,以为它是官方服务器,不过事实上任何人都可以在自己的网域上运行XMPP服务器。

    Jabber识别符(JID)是用户登录时所使用的账号,看起来通常像一个电子邮件地址,如someone@example.com;前半部分为用户名,后半部分为XMPP服务器域名,两个字段以@符号区隔。

    假设朱丽叶(juliet@capulet.com)想和罗密欧(romeo@montague.net)通话,他们两人的账号分别在Capulet.com及Montague.net的服务器上。当朱丽叶输入信息并按下传送钮之后,一连串的事件就发生了:

    1. 朱丽叶的XMPP客户端将她的信息传送到Capulet.com XMPP服务器。
    2. Capulet.com XMPP服务器打开与Montague.net XMPP服务器的连接。
    3. Montague.net XMPP服务器将信息寄送给罗密欧。如果他目前不在在线,那么存储信息以待稍后寄送。

    JulietleftrightarrowCapulet.comleftrightarrowMontague.netleftrightarrowRomeo

    罗密欧与朱丽叶两人的XMPP服务是由两家不同的业者所提供的,而他们彼此传讯时,不须拥有对方服务器的账号,也不须成为对方业者的会员。

     

    使用XMPP协议的客户端与服务器端对话的例子

    客户端(kuusipuu)连接到一个XMPP服务器(amessage.de:5222/TCP),发送一条消息(主题和内容均为“test 1449”)到另一个客户端(tero),然后注销。

    kuusipuu:

    <?xml version="1.0"?>
    <stream:stream xmlns:stream="http://etherx.jabber.org/streams"
    xmlns="jabber:client" to="amessage.de">

    amessage.de:

    <stream:stream xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    from='amessage.de' id='1461777714'>

    kuusipuu:

    <iq type="set" id="auth_2" to="amessage.de" >
    <query xmlns="jabber:iq:auth">
      <username>kuusipuu</username>
      <password>mypassword</password>
      <resource>Work</resource>
     </query>
    </iq>

    amessage.de:

    <iq from="amessage.de" id='auth_2' type='result'/>

    kuusipuu:

    <message to="tero@example.com" >
    <subject>test 1449</subject>
    <body>test 1449</body>
    </message>
    <presence type="unavailable" >
    <status>Logged out</status>
    </presence>
    </stream:stream>

    amessage.de:

    </stream:stream>

    参考:http://zh.wikipedia.org/wiki/XMPP

  • 相关阅读:
    xml
    企业级应用和互联网应用的区别
    javaee学习目标
    数据库基本原理
    数据库学习感想
    数据库设计
    团队项目自我评价
    团队项目-软件度量
    团队项目-初级版本
    团队项目—详细设计
  • 原文地址:https://www.cnblogs.com/coolwxb/p/3517548.html
Copyright © 2011-2022 走看看