本文引用了简书作者“骑小猪看流星”技术文章“Cookie、Session、Token那点事儿”的部分内容,感谢原作者。
1、前言
众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现。Http短连接主要用于从服务器读取各种持久化信息:比如用户信息、聊天历史记录、好友列表等等,长连接则是用于实时的聊天消息或指令的接收和发送。
作为IM系统中不可或缺的技术,Http短连的重要性无可替代,但Http作为传统互联网信息交换技术,一些典型的概念比如:Cookie、Session、Token,对于IM新手程序员来说并不容易理解。鉴于Http短连接在IM系统中的重要性,如何正确地理解Cookie、Session、Token这样的东西,决定了您的技术方案能否找到最佳实践。本文将从基础上讲解这3者的原理、用途以及正确地应用场景。
题外话:本文讨论的使用Http短连接的话题可能并不适用于微信这样的IM,因为微信的短连接并非使用Http标准协议实现,而是基于自研的Mars网络层框架再造了一套短连接机制,从而更适用于IM这种场景(更低延迟、更省流量、更好的弱网适应算法等),详情请见《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》。当然,Mars虽好,但不一定适合您的团队,因为定制的方案相较于标准通用方案来说,没有强大的技术实力,还是不太容易掌控的了的。
一篇文章:《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》这篇文章详述了现今移动网络下http短连接的网络层技术问题,有助于更好地理解本文,有兴趣的话也推荐读一读。
学习交流:
- 即时通讯开发交流群:320837163[推荐]
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
(本文同步发布于:http://www.52im.net/thread-1525-1-1.html)
2、系列文章
▼ IM开发干货系列文章(本文是其第13篇):
《IM消息送达保证机制实现(一):保证在线实时消息的可靠投递》
《一种Android端IM智能心跳算法的设计与实现探讨(含样例代码)》
《IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理》
《IM开发基础知识补课(二):如何设计大量图片文件的服务端存储架构?》
如果您是IM开发初学者,强烈建议首先阅读《新手入门一篇就够:从零开发移动端IM》。
3、什么是Cookie?
Cookie 技术产生源于 HTTP 协议在互联网上的急速发展。随着互联网时代的策马奔腾,带宽等限制不存在了,人们需要更复杂的互联网交互活动,就必须同服务器保持活动状态(简称:保活)。于是,在浏览器发展初期,为了适应用户的需求技术上推出了各种保持 Web 浏览状态的手段,其中就包括了 Cookie 技术。Cookie 在计算机中是个存储在浏览器目录中的文本文件,当浏览器运行时,存储在 RAM 中发挥作用 (此种