----------------------------------------------------欢迎查看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软件的层次图

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

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

  1. 讨论IM软件企业知识—会谈session的概念,附连到IM软件层次图

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

  2. 浅谈IM软件业务知识-实现富文本解析,如:解析字符串、网络链接等

    ----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------- ...

  3. IM软件业务知识—导航

    ----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------- ...

  4. 浅谈Ubuntu 18.04.1 LTS x86_64安装,美化配置及常用软件安装配置的历程

    浅谈Ubuntu 18.04.1 LTS x86_64安装,美化及常用软件安装配置的历程 这几天入坑Ubuntu,本着双系统来的却不小心把Windows玩崩了.期间各种问题各种坑,查阅了很多文章来解决 ...

  5. 浅谈一下企业IT运维痛点以及好用的运维软件推荐

    随着IT建设的不断深入和完善,IT资产越来越多,IT运维管理越发显得重要.但不少企业不知道如何有效进行IT运维,不知道如何更好进行IT运维,今天我们就来一起浅谈一下企业IT运维痛点,以及给大家推荐一款 ...

  6. 浅谈人工智能(`AI`)基础知识

    人工智能(AI)-基础知识 文档导航 人工智能(`AI`)-基础知识 1. 什么是人工智能 1.1 人工智能基础定义 1.2 人工智能基本概述 1.3 人工智能基本组成 1.4 人工智能研究课题 1. ...

  7. 浅谈大数据业务处理流程

    大数据业务处理根据数据形式可分为"离线数据"与"实时数据". "实时数据"也就是要即时反馈的数据,如购物平台的推荐系统:猜你喜欢,买了又买. ...

  8. 谈计算机知识对学生的作用,浅谈学习计算机基础知识对中专学生的重要性

    [摘 要]本文主要介绍了计算机基础知识的内容,阐述了学习计算机基础知识对中专学生的作用,并且通过对计算机基础操作的学习,提高中专学生的计算机应用水平.希望本文可以让中专学生认识到学习计算机基础知识的重 ...

  9. 浅谈PE(私募股权)业务及系统建设:02. 系统建设

    在上一篇文章中,我们通过金信公司的例子,简单介绍了PE业务的运作模式.显然,随着PE公司管理的基金规模的不断增长,基金公司要保持高效和可靠的基金运营以及投资者服务水平,依靠人工力量的成本是很高的,甚至 ...

最新文章

  1. 美国实行公共场所禁用面部识别设备 IBM跨界饮食业利用AI开发美食
  2. 使用uni-app实现使用浏览器下载功能时,安卓端部分机型不兼容问题(小米/华为)
  3. linux ubuntu gcc编译 fatal error: bits/libc-header-start.h 错误解决
  4. 启明云端分享| ESP32-S2直驱USB摄像头
  5. 【资源】机器学习 周志华
  6. 机器人的弊议论文_关于练字的作文800字高中(写字机器人的利弊议论文)
  7. 32位qt程序, 利用32位mysql驱动,连接64位mysql8.0
  8. 【常见网页排版布局】
  9. 26.时空跳跃者的魔法
  10. APIC -- 高级可编程中断控制器
  11. Nginx获取真实用户IP
  12. Ubuntu关机和重启的命令
  13. 〖ChatGPT实践指南 - 零基础扫盲篇③〗- 开始使用 ChatGPT 并访问 OpenAI 获取 API Keys
  14. 动态SQL中if标签:test判断的null和“ “的问题
  15. centos8 安装oracle 11gR2
  16. 布尔教育mysql优化_布尔教育燕十八mysql优化视频课件源码分享
  17. nginx安装部署pc端限制访问配置
  18. 达人评测 rtx3050ti和gtx1650ti哪个好 3050ti和1650ti对比差多少
  19. 《数据挖掘原理与实战》教程网盘下载
  20. 智合同丨广告合同的审查技巧和方法

热门文章

  1. SWAN学习笔记——安装与模拟实例
  2. 为什么对方显示短信呼服务器,怎么设置短信呼服务器
  3. 【网络安全】系统安全与内容安全(二)(复习用)
  4. 那么辛苦的熬单片机,不拿它DIY点小玩意怎么对得起自己。
  5. 如何使用Unity制作虚拟导览(二)
  6. hdoj5621KK's Point
  7. 拿科比死和疫情伤亡人数对比,不是蠢就是坏!
  8. 熔化极氩弧焊(MIG,MAG)
  9. CMMI流程规范—实现与测试
  10. 当你没事干的时候。。。