Advertisement

JavaFX+NIO聊天室

阅读量:

设计思路

由于网络传输的不稳定性,在建立TCP长时间连接的过程中可能会遇到一些异常情况。例如,在线路突然断开或电源供电中断的情况下会导致服务器与客户端之间的连接中断。当服务器与客户端之间当前没有任何交互时,在这些异常情况下它们无法迅速察觉到彼此已经失联。
这种机制便能有效地解决此类问题。

如何实现心跳机制?

两种方案达成心跳机制的功能: 第一种方案基于TCP协议中的keepalive机制, 能够实时检测网络连接状态; 第二种方案则是在应用层设计了一个专门的心跳功能, 并通过定时任务来维持心跳频率的稳定性.

协议层面的心跳连接

TCP协议中有长连接和短连接之分,在长时间的数据交互中存在潜在风险。当在无数据交互的情况下长时间断开电源或发生故障时(例如死机、崩溃或重启),客户端可能会导致另一端不知情而持续维护该连接。这种状态会导致大量未完成的半开连接累积起来,在资源消耗和浪费方面表现明显,并可能在无效数据链路上传输业务数据从而导致发送失败。因此服务器端需要快速检测这些异常情况并减少无效链接操作以维持系统稳定

HTTP1.0协议采用了短连接方式,在经历了HTTP1.1之后,默认采用长连接模式。在TCP协议体系中,“长连接”与“短连接”本质上是相同的概念。当发起多个HTTP请求时(包括请求网页内容、CSS文件、JS文件以及图片等),实际上都使用了同一个T

全部评论 (0)

还没有任何评论哟~