##讨论课作业
###保持连接(长连接心跳机制)
####定义
- 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。
####与短连接对比
-
长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。
-
长连接
- 指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接;一般需要自己做在线维持。
-
短连接
- 指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接;一般银行都使用短连接。它的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。
####适用场景
- 长连接
- 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。 每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多。所以数据库的操作应该用长连接。以及生活中的常见的判断QQ是否下线也是用了长连接心跳机制。ATM机就不需要长连接。
###防止消息丢失和消息重发
####起因
- client发的消息由于网络连接不好或者超过limit等原因,都有可能不能成功到达server端。我们要防止消息丢失,以及恰当的使用消息重发。
####解决
- client发之前要验证queue是否可用以及保证监听topic的client都收到合法消息。
- 在onMessage方法中使用try-catch,这样可以在处理消息出错时记录一些信息,而不是让consumer不断去重发消息。
###SIP压缩机制(话外)
-
SIP定义
- 它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。它不定义要建立的会话的类型,而只定义应该如何管理会话。
-
SIP压缩机制
- SIP 压缩机制主要是通过改变 SIP 消息的长度来降低时延。典型的 SIP 消息的大小由几百到几千字节,为了适合在窄带无线信道上传输,IMS对SIP进行了扩展,支持SIP消息的压缩。当无线信道一定时, 一条SIP消息所含帧数 k仅取决于消息大小。从时延模型可以看出,不仅影响 SIP 消息传输时延, 还影响SIP重传的概率, 对自适应的定时器来说,k还成了影响定时器初值的关键因素。
-
应用
- google 发布世界上首个开源的Html5 sip 客户端 HTML5 SIP客户端是一款开源的,完全利用JavaScript编写的集社交(FaceBook,Twitter,Google+),在线游戏,电子商务等应用于一体。无扩展,无插件或是必备的网关,视频堆栈技术依赖于WebRTC。如同主页里的Demo视频演示,你可以轻松实现Chrome和IOS/Android移动设备之间的实时视频/音频通话。 该客户端是一项在浏览器中可被用来连接任意SIP或者IMS网络进行拨打和接收音频/视频通话及即时信息技术。该协议解析器(SIP,SDP...)通过使用Ragel查找表进行了高度优化,很适合硬件(内存和运算能力)受限的嵌入式系统使用。