浅谈IM软件业务知识—会话session的概念,附一张IM软件的层次图

—————————————————-欢迎查看IM软件业务知识《专栏》——————————————————————-
使用状态机来保持在线状态 【点击】                      拼图算法,将零碎小图,整理到一张大图上【点击】
登录导航 【点击】                                                   会话session的概念【点击】       
“假在线’ 【点击】                                                    非对称加密,RSA算法【点击】
如何建立安全socket连接、登录 【点击】               浅谈断线重连、心跳和长在线 【点击】
iOS 客户端创建网络连接,常见错误汇总 【点击】 protocolBuf 在iOS上的使用入门、讲解、指南 【点击】
实现富文本解析【点击】                                          UITableview Deceleration 加速滑动(惯性滑动)、弹性回归原理【点击】
——————————————————————————————————————————————————————–

        session一般出现在计算机领域,IM软件中的session,老的IM有两层:首先是逻辑层的session来管理会话的参与者,消息列表,会话类型等等;还有协议层的session,主要是代表客户端跟服务器的一个事物通道。

老的IM软件

客户端跟Server交互的每一类操作都是基于会话。比如客户端登录,需要建立一个登录的会话;客户端发消息,需要建立一个会话。下面举例:

    客户端向Server发了一条消息,这条消息的发送就建立在会话之上。客户端需要下面几个步骤。

    1. 创建一个session ID=1,

    2. 发第一条消息的sequence id=1,第二条消息sessionID仍是1,但是sequence ID=2以此类推,同一个联系人建立的sessionID不变,sequenceID跟着消息的数量递增。

    3. 消息发送完成后,关闭session。

    客户端发送完消息,需要Server的回执,所以sessionID+sequenceID组成唯一的标识,可以找到发送的这条消息,更新UI的显示。

上面的场景就是所谓的【会话内】消息,主要是发给在线联系人,Server做了特殊处理,这样的消息可以很快速的到达对方。有了会话内,就有【会话外】:会话外指的是:不需要建立会话,直接发送给对,Server会存储下来等到对方下次上线再发送。

    很明显,会话外的逻辑要比回话外的简单得多!

现状

    现代的IM软件应该都是所谓的会话外了,没有协议层的session的概念了,只有逻辑层的session。

    现代的协议更聪明了,每一个消息都有一个messageID,这样的话。会话的概念就不存在了,客户端-服务器之间只有一个socket网络层面的会话了。

附一张IM软件的层次图

浅谈IM软件业务知识—会话session的概念,附一张IM软件的层次图

protocol.a是一个简写,其实是一个核心的库,负责协议层的解析和管理。

来源:hherima

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年5月16日
下一篇 2014年5月16日

相关推荐