讨论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软件的层次图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGhlcmltYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
protocol.a它是一个速记,事实上,核心库,负责分析和管理协议层。
版权声明:本文博主原创文章,博客,未经同意不得转载。
讨论IM软件企业知识—会谈session的概念,附连到IM软件层次图的更多相关文章
- 软件项目管理 ——1.2.PMBOK与软件项目管理知识体系
软件项目管理 --1.2.PMBOK与软件项目管理知识体系 归档于软件项目管理初级学习路线 第一章 软件项目管理基本概念 <初级学习路线合集 > @ 目录 软件项目管理 --1.2.PMB ...
- [转]Web3.0时代,企业知识管理新趋势
[转自http://www.amt.com.cn/html/ManageFront/AMTPoint0/2014/0716/1370.html] Web3.0时代,企业知识管理新趋势 2014-07- ...
- IM软件业务知识—导航
----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------- ...
- 【DB宝47】企业知识分享+团队协作神器之Confluence
目录 一.Confluence简介 二.知识库软件对比 三.快速安装confluence 7.4.6版本 四.confluence基本操作简介 4.1.创建空间(Space) 4.2.配置空间权限 4 ...
- [py]软件编程知识骨架+py常见数据结构
认识算法的重要性 - 遇到问题? 学完语言,接到需求,没思路? 1.学会了语言,能读懂别人的代码, 但是自己没解决问题的能力,不能够把实际问题转换为代码,自己写出来.(这是只是学会一门语言的后果),不 ...
- 关于SharePoint 讨论板的一些知识
关于SharePoint 讨论板的一些知识 近期公司项目可能要用到讨论板.需求是这种: 怎样在回复中仅仅让查看登陆者和讨论主题公布者的信息. 比方我公布 ...
- 关于SharePoint讨论板的一些知识(2)--视图中的栏目
关于SharePoint讨论板的一些知识(2)--视图中的栏目 新建讨论后,默认显示四个栏目:主题.创建者.答复和上次更新时间. 从功能区的当前视图能够看出这是默认的主 ...
- 与某军工背景软件企业分享Azure DevOps Server的经验
DevOps 是英文单词Development和Operations的组合词,是一种用于促进软件开发.运维实施和质量保障部门之间协同工作的过程和方法. 结合软件开发管理规范,应用自动化的构建.测试和发 ...
- linux下软件安装知识整理
一.软件包安装分类源码包二进制包(RPM包,系统默认包)源码包优点1.开源 可以自由选择所需的功能 软件是编译安装,适合自己系统,更加稳定,效率更高 卸载方便 缺点 安装过程步骤较多,容易 ...
随机推荐
- angular4开发过程中遇到的问题和知识点记录
1. angular2中的属性有什么区别,为什么会报错呢? 元素上有两种属性:property和attribute,attribute是通过getAttribute()和setAttribute()方 ...
- [AngularFire 2] Object Observables - How to Read Objects from a Firebase Database?
In this lesson we are going to learn how to use AngularFire 2 to query objects, and read them from t ...
- [Debug] Use Snippets to Store Behaviors in Chrome DevTools
Using the Snippets tab in the source devtool you can define and run arbitrary pieces of code in your ...
- Delegates, Events and Singletons with Unity3D – C#
在这里我将演示怎样创建代表. 事件和Singletons 在一起工作. 本教程为 Unity3D 编写. 我想知道这为什么?作为一个年轻的自学程序猿,我常常发现自己写tons 和布尔的语句,以确 ...
- js进阶 12-5 jquery中表单事件如何使用
js进阶 12-5 jquery中表单事件如何使用 一.总结 一句话总结:表单事件如何使用:可元素添加事件监听,然后监听元素,和javase里面一样. 1.表单获取焦点和失去焦点事件有哪两组? 注意是 ...
- [React Native] Disable and Ignore Yellow Box Warnings in React Native
Yellow box warnings in react native can be intrusive. We will use console.disableYellowBox to disabl ...
- [AngularFire2] Update multi collections at the same time with FirebaseRef
At some point, you might need to udpate multi collections and those collections should all updated s ...
- Qt信号槽传递自定义类型参数(qRegisterMetaType)
1 #include <QMetaType>//记得包含这个头文件 2 //my_type是我自己定义的类型 3 qRegisterMetaType<my_type>(&quo ...
- php二维数组中的查找(善于利用基础函数)
php二维数组中的查找(善于利用基础函数) 一.总结 真没必要完整的写函数,善于借用 1.array_search()是在以为数组中来找,现在我们要在二维数组数组中来,肯定要借用这个 2.!==fal ...
- Android官方数据绑定框架DataBinding(一)
还记得在博客<高逼格UI-ASD(Android Support Design)>的開始曾经说过,Android最新推出了一个官方的数据绑定框架-Data Binding Library. ...