tomcat 7.0.50 http 升级 websocket
2016-03-02 13:09
671 查看
先说下coyote连接器架构的ActionHook机制,此机制允许外部框架(如web容器)向coyote发起一些coyote定义的事件通知,其中包括http协议的升级事件,coyote在处理流程中如果检测到有hook事件则进行相应的事件操作,http协议的升级约定了升级用到的接口HttpUpgradeHandler及其相关接口,外部框架需要实现此接口才能接管升级coyote的http连接。
WebSocket请求是以http协议发送到tomcat的web容器处理的,tomcat在部署阶段向应用的处理链中添加了一个过滤器,这个过滤器接收到这个请求后检查是否是WebSocket请求(检查header),如果不是则继续web容器的处理流程,如果是则开始进行http协议到WebSocket协议的升级,升级的具体实施是使用coyote连接器架构的ActionHook机制,hook的对象是一个HttpUpgradeHandler的实例,WebSocket实现的协议升级处理对象为WsHttpUpgradeHandler,在过滤器内部,通过coyote开发的hook
api将WsHttpUpgradeHandler传递到coyote内部,coyote处理流程检测到该对象时会通过HttpUpgradeHandler接口向新协议的实现传递具体的信息(主要I/O的读写接口),之后便放弃了此次socket连接的处理权,由新协议的实现者接管,新协议的实现者(目前只有websocket)使用coyote传递过来的I/O操作接口进行协议的解析处理。协议升级流程及涉及类图如下图所示:
WebSocket请求是以http协议发送到tomcat的web容器处理的,tomcat在部署阶段向应用的处理链中添加了一个过滤器,这个过滤器接收到这个请求后检查是否是WebSocket请求(检查header),如果不是则继续web容器的处理流程,如果是则开始进行http协议到WebSocket协议的升级,升级的具体实施是使用coyote连接器架构的ActionHook机制,hook的对象是一个HttpUpgradeHandler的实例,WebSocket实现的协议升级处理对象为WsHttpUpgradeHandler,在过滤器内部,通过coyote开发的hook
api将WsHttpUpgradeHandler传递到coyote内部,coyote处理流程检测到该对象时会通过HttpUpgradeHandler接口向新协议的实现传递具体的信息(主要I/O的读写接口),之后便放弃了此次socket连接的处理权,由新协议的实现者接管,新协议的实现者(目前只有websocket)使用coyote传递过来的I/O操作接口进行协议的解析处理。协议升级流程及涉及类图如下图所示:
相关文章推荐
- http get请求
- iOS网络开发(2)使用NSURLConnection
- HttpContext详解
- 什么是网络爬虫(Spider) 程序
- HttpServlet---getLastModified与缓存
- tcpdump的使用
- KVM 网络设置
- (转)几种开放源码的TCPIP协议栈概述
- TCP三次握手和四次挥手详解
- 如何更高效地使用 OkHttp
- iOS网络开发(1)写代码前需要了解的
- 卷积神经网络(深度学习)一些问题总结
- ASIHTTPRequest
- 卷积神经网络
- Myeclipse中的TCP/IP Monitor使用
- STL之list容器详解 http://www.cnblogs.com/scandy-yuan/archive/2013/01/08/2851324.html
- 计算机网络的各个分层
- iOS开发——网络编程OC篇&Socket编程
- TCP、UDP、IP 协议分析
- iOS实际网络检测框架RealReachability