您的位置:首页 > 理论基础 > 计算机网络

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操作接口进行协议的解析处理。协议升级流程及涉及类图如下图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: