客户端与服务端基于HTTP和WebSocket网络协议来通讯,其中HTTP用于从客户端向服务端的请求,WebSocket用于从服务端向客户端的推送,因此服务器端需要支持HTTP和WebSocket两种协议。HTTP好说,所有Web服务器都支持,而支持WebSocket的倒不多。
- Java阵营:Tomcat 7和Netty
- .Net阵营:System.Net.WebSockets
- Nodejs阵营:Socket.io
1)Web通信的演进
2)WebSocket
3)WebSocket在Apache Tomcat 7(7.0.27 )的实现
4)怎样用Jaggery开发WebSocket特性
Tomcat 7中引入了WebSocket实现。下面我们先了解WebSocket的优缺点,其次简要介绍Apache Tomcat 7的WebSocket实现。
WebSocket的演进过程如图所示:
要知道在Tomcat 6中要实现双向HTTP通信,需要使用Tomcat的Comet处理模块。Comet有以下局限:
1)HTTP协议本身是请求/响应协议,而不是双向协议
2)代理和其它中间媒介不会工作的很好
3)在任何给定的时间只有某个方向的数据包传输
4)Servlet开发者要使用多线程很难
Servlet 3.0版引入了一个新特征:异步Servlet。我们把它与客户端的Ajax调用进行比较。异步Servlet会把请求悬挂起,直到响应准备好交付,无需在容器中使用worker线程。WebSockets是另一个尝试标准化的技术,它支持HTTP之上的异步、事件驱动和全双工通信。
WebSocket给我们带来了如下特性:
1)通过升级/交换HTTP协议,在HTTP之上提供全双工通信
2)基于消息/帧的通信
3)可以与代理和中间媒介一起工作
4)还可以不与代理和中间媒介一起工作
WebSocket的优点:
1)WebSocket是理想的,客户端和服务器之间不再需要长期运行的会话
2)WebSocket是HTTP协议之上的全双工通信
3)由于WebSocket是HTTP握手初始化之后的TCP之上的协议,所以你只需做两件事:
发送消息
接收消息