XMPP通信小结(1)

        我们想制做一个比较完美的IM系统(即时通信系统),那么就需要将系统的整个信息交互的流程从头到尾的梳理清楚。然要进行通信,用“文本”+“\r\n”作为一句话的形式就太不规范了,不规范的信息可能导致未知的错误,那么该怎样规范起来呢?

      下面对XMPP通信协议和IM交互流程两部分进行小结。                                                           


                                        (一)XMPP通信协议



       通信,指两者通过某种行为或媒介进行的信息交流与传递,即使用某种媒质,将信息从某方准确安全传送到另方。很显然,“文本”+“\r\n”这样规定是一句话的形式是不安全的,例如:String s = "hello" + "\r\n" + world !";

    String msg = s + "\r\n";

      其中s是一句话,但是msg可能会显示成两句话的形式,这就与我们的原意有出入,所以我们又必要制定一套新规则,也就是使用协议。



     协议是指两个软件之间进行通信所必须共同遵守的规定或规则。制定协议要注意三点:

             (1)语法:数据与控制信息的结构或格式;

       (2)语义:需要发出哪种控制信息,完成哪种动作以及做出哪种响应;

     (3)同步,事件实现顺序的详细说明。

      制定了协议之后, 使用协议的每个人都必须了解协议,并且预先知道所要完成的所有的步骤; 使用协议的每个人都必须同意并遵循协议; 协议每一步必须明确定义,并且不会引起误解。

        


        XMPP通信协议便可以解决问题。XMPP ( The Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。不要担心XML(Extensible Markup Language即可扩展标记语言),它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。用他,我们可以自己定义标记语言。比如:我们可以定义<msg>标明了一条完整的消息,即<msg>和</msg>之间包含的是一条完整的消息;定义<sender>标明了发送者的名字,即<sender>和</sender>之间包含的是发送者的姓名。

 

 

        整个过程就像是将 要发送的消息安装协议进行包装,对方接受后进行 解包装,从而使对方安全准确获得有效信息。我们可以这样定义消息是登陆消息还是聊天消息,例:

 

<msg>
    <type>login</type>
    <name>用户名</name>
    <psw>密码</psw>
</msg>

 <msg>

    <type>chat</type>
    <sender>用户名</sender>
    <reciver>密码</reciver>
    <text>文本消息内容</text>
</msg>

 

      这样,通过XMPP协议,自定义标记语言,规定规范的消息结构,软件相互间的交流就非常规范了。

 

 

                                         (二)流程

          无论是这个项目还是其他的,流程都非常重要。流程图之于程序就如同提纲之于文章。梳理流程,我认为需要从两方面着手,考虑六个问题。

           其一,先做什么,接着做什么,最后做什么;                                                                                   其二,是谁做了什么事,传递了什么信息给谁,产生了什么结果。           

当分析清楚具体的流程后,整个程序的框架便搭建好了,同时,消息的结构也就可以确定了。至于代码,“翻译”一下就实现了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值