XMPP学习3-IM即时消息

IM

IM(Instant Meassge),核心是提供网络上从一个地方到另一个地方的快速路由信息的能力,因此,XMPP 服务器被优化用来在很小的延迟里处理大量的相对小的消息。

消息投递

XMPP服务器连接方式如下(无中间服务器跳跃)
这里写图片描述
消息传递流程:
1 发起用户客户端通过client-to-server XML流推送消息节到自身服务器
2 发起用户服务器在节上贴上from地址的邮戳,并检查to地址
3 发起用户服务器通过server-to-server XML流路由消息到目的用户服务器(无中间服务器跳跃)
4 目的服务器接收到消息节,服务器检查目的用户是否在线,如果在线,服务器立即通过server-to-client XML 流传递
消息到目的用户的在线设备中的一个或多个
特殊投递
chat 和 normal 消息被接收人的服务器以一种特定的方式处理:如果消息是投递到账户的 bare JID(裸JID),服务器立即把消息传递给当前与账户关联的优先级最高的资源。

聊天状态通告

聊天状态描述了你所参与的对话,在消息节中嵌入相关的聊天状态元素来进行对话中的状态改变。
示例:

<message from="user1@ejabberd.org"
                     to="user2@nassue.org"
                     type="chat">
         <body>Hi Daye Nihao!</body>
         <active xmlns="http://jabber.org/protocol/chatstates"/>
</message>

状态如下:
1 starting 某人开始一个对话,但是你还没有参与进去
2 active 你正参与在对话中,当前没有组织消息,而是在关注
3 composing 你正在组织一个消息
4 paused 你正在组织一个消息,但由于某些原因停止组织消息
5 inactive 你一段时间没有参与这个对话
6 gone 你参与的对话已结束(例:你关闭了聊天窗口)
状态转变图
这里写图片描述

格式化消息

XMPP让你能够自定义消息的外观或表达,利用Html子集或者CSS格式文本,包括许多流行的风格格式,包括颜色、字体、文字大小、字体粗细(例如,粗体)和字体风格(例如,斜体)、字体边缘、文本对齐(例如,居中)、和文本装饰(例如,下划线)。
示例:

<message from="suke@skh.whu.edu.cn"
          to="beta@skh.whu.edu.cn"
          type="chat">
         <body>I love this movie I saw last night, it's awesome!</body>
         <html xmlns="http://jabber.org/protocol/xhtml-im">
            <body xmlns="http://www.w3.org/1999/xhtml">
               <p>
                  I <em>love</em>, this new movie I saw last night,it's <strong>awesome</strong>!
               </p>
           </body>
        </html>
</message>

阻止和过滤通讯

阻止-一个简单方法
需阻止某用户通讯时,若服务器支持简单通讯阻止,只需要向自己服务器发送一个适当的 IQ-set即可:

<iq from="user1@ejabberd.org/Psi"
         id="yu4er81v"
         to="user1@ejabberd.org"
         type="set">
     <block xmlns="urn:XMPP:blocking">
         <item jid="user2@nassue.org"/>
     </block>
</iq>

意味着user2无法用任何方法获取user1的在线信息,user1服务器会忽略所有来自user2的<message/>以及应答IQ-get或IQ-set为<service-unavailable/>,而且会阻止user1向user2发送消息或者IQ请求,并返回<not-acceptable/>错误
在通 简单讯阻止中 ,需要解封时,也只需要向自己服务器发送一个适当的 IQ-set即可:

<iq from="user1@ejabberd.org/Psi"
         id="ng23h57w"
         to="user1@ejabberd.org"
         type="set">
     <unblock xmlns="urn:XMPP:blocking">
         <item jid="user2@nassue.org"/>
     </unblock>
</iq>

高级阻止与过滤
通过隐私列表实现,隐私列表是一个针对所有交通匹配的规则列表,包括进来的和出去的

<list name="mylist">
       <item type="jid" value="user2@nassue.org" action="deny" order="1">
             <iq/>
             <message/>
             <presence-out/>
       </item>
       <item type="group" value="C208" action="deny" order="2">
             <presence-in/>
         </item>
         <item action="allow" order="3"/>
</list>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值