zoukankan      html  css  js  c++  java
  • 讨论IM软件企业知识—会谈session的概念,附连到IM软件层次图

        session通常当今计算机领域,IM软体session。老IM那里有两个:第一个是逻辑层session参与者管理会议。新闻列表,会话类型等;有协议层session。主要代表client随着server有一件事通道。

    老IM软件

    client跟Server交互的每一类操作都是基于会话。比方client登录,须要建立一个登录的会话;client发消息。须要建立一个会话。以下举例:

        client向Server发了一条消息,这条消息的发送就建立在会话之上。client须要以下几个步骤。

        1. 创建一个session ID=1。

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

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

        client发送完消息。须要Server的回执,所以sessionID+sequenceID组成唯一的标识,能够找到发送的这条消息。更新UI的显示。

    上面的场景就是所谓的【会话内】消息,主要是发给在线联系人,Server做了特殊处理,这种消息能够非常高速的到达对方。

    有了会话内。就有【会话外】:会话外指的是:不须要建立会话,直接发送给对,Server会存储下来等到对方下次上线再发送。

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

    现状

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

        现代的协议更聪明了,每个消息都有一个messageID,这种话。

    会话的概念就不存在了。client-server之间仅仅有一个socket网络层面的会话了。

    附一张IM软件的层次图


    protocol.a它是一个速记,事实上,核心库,负责分析和管理协议层。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ORACLE时间字段取年、月、日、季度【转】
    Oracle查询指定索引提高查询效率【转】
    ORACLE常用命令【转】
    ORACLE中LOB字段的使用和维护
    Oracle建立DBLINK的详细步骤记录【转】
    Oracle实用日期函数总结[转]
    js脚本中过滤特殊字符的正则表达式
    获取上一页面的URL的方法
    Repeat控件绑定数据格式显示
    我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4885258.html
Copyright © 2011-2022 走看看