Java 后端 WebSocket 的 Tomcat 实现
一.WebSocket 简单介绍
随着互联网的发展,传统的 HTTP 协议已经很难满足 Web 应用日益复杂
的需求了。近年来,随着 HTML5 的诞生,WebSocket 协议被提出,它实现
了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务
端也能主动向客户端发送数据。
我们知道,传统的 HTTP 协议是无状态的,每次请求(request)都要由
客户端(如 浏览器)主动发起,服务端进行处理后返回 response 结果,而服
务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传
统 Web 模式 对于信息变化不频繁的 Web 应用来说造成的麻烦较小,而对于涉
及实时信息的 Web 应用却带来了很大的不便,如带有即时通信、实时数据、
订阅推送等功能的应 用。在 WebSocket 规范提出之前,开发人员若要实现这
些实时性较强的功能,经常会使用折衷的解决方法:轮询(polling)和
Comet 技术。其实后者本质上也是一种轮询,只不过有所改进。
轮询是最原始的实现实时 Web 应用的解决方案。轮询技术要求客户端以
设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动。
明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。
Comet 技术又可以分为长轮询和流技术。长轮询改进了上述的轮询技术,
减小了无用的请求。它会为某些数据设定过期时间,当数据过期后才会向服务