解决WebSocket兼容ie浏览器版本问题
2017-12-01 15:23
696 查看
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7942323.html
在使用Netty进行WebSocket开发时,测试发现:ie 11系列个别低版本连接WebSocket后立即自动断开了连接。如,ie 11.0.38。
发现,WebSocket客户端连接服务器后,立即触发了断开事件,是什么原因呢?
debug,问题锁定代码块:
难道该ie版本不支持WebSocket?换成javaee-api-7.0.jar或者tomcat自带的websocket包测试都通过,所以确定该版本还是兼容WebSocket的。
目前各浏览器支持的WebSocket版本和服务器netty的WebSocket版本都是13。到底是什么原因呢?
在不同浏览器下测试看看,打印:req.getDecoderResult().isSuccess()和req.headers().get("Upgrade")的值到底是什么。!!!
用其他浏览器测试,打印结果都是:true;websocket
唯独用ie 11系列个别版本测试,打印的结果是:true;Websocket
让人很无语的发现,其中Websocket的W是大写的。为什么ie 11系列里面有的版本是跟主流浏览器一样是websocket,个别低版本却是Websocket。
这应该就是跟ie11系列各种问题,所以才出了那么多版本的问题吧。
当然,解决问题的方法显而易见了。将equals该为equalsIgnoreCase。
后面会将WebSocket系列和Netty系列补上,有兴趣的可关注。
如果此文对您有帮助,微信打赏我一下吧~
在使用Netty进行WebSocket开发时,测试发现:ie 11系列个别低版本连接WebSocket后立即自动断开了连接。如,ie 11.0.38。
1.调试
后台日志打印:WebSocket handlerAdded handlerAdded---WS管道标识:00000000000000e0-00002520-0000001b-e9a4ab6f2de6f7bb-aa79b5c5 WebSocket channelActive WebSocket channelRead0 WebSocket channelReadComplete WebSocket channelInactive WebSocket handlerRemoved handlerRemoved---WS管道标识:00000000000000e0-00002520-0000001b-e9a4ab6f2de6f7bb-aa79b5c5 WebSocket handlerAdded handlerAdded---WS管道标识:00000000000000e0-00002520-0000001c-c5d7cd14ade6fbc9-50bf51ea WebSocket channelActive WebSocket channelRead0 WebSocket channelReadComplete WebSocket channelInactive WebSocket handlerRemoved handlerRemoved---WS管道标识:00000000000000e0-00002520-0000001c-c5d7cd14ade6fbc9-50bf51ea
发现,WebSocket客户端连接服务器后,立即触发了断开事件,是什么原因呢?
debug,问题锁定代码块:
2.思考
在判断是否可升级成WebSocket协议时,发现该Http协议无法升级成ws协议,从而返回异常。难道该ie版本不支持WebSocket?换成javaee-api-7.0.jar或者tomcat自带的websocket包测试都通过,所以确定该版本还是兼容WebSocket的。
目前各浏览器支持的WebSocket版本和服务器netty的WebSocket版本都是13。到底是什么原因呢?
在不同浏览器下测试看看,打印:req.getDecoderResult().isSuccess()和req.headers().get("Upgrade")的值到底是什么。!!!
3.解决
测试结果:用其他浏览器测试,打印结果都是:true;websocket
唯独用ie 11系列个别版本测试,打印的结果是:true;Websocket
让人很无语的发现,其中Websocket的W是大写的。为什么ie 11系列里面有的版本是跟主流浏览器一样是websocket,个别低版本却是Websocket。
这应该就是跟ie11系列各种问题,所以才出了那么多版本的问题吧。
当然,解决问题的方法显而易见了。将equals该为equalsIgnoreCase。
后面会将WebSocket系列和Netty系列补上,有兴趣的可关注。
如果此文对您有帮助,微信打赏我一下吧~
相关文章推荐
- CSS样式如何解决IE浏览器不同版本的兼容问题
- IE浏览器各版本与web标准不兼容问题解决方案
- 点聚web office解决IE浏览器多个版本兼容问题
- IE浏览器各版本与web标准不兼容问题解决方案
- IE浏览器JSON不兼容问题及浏览器版本问题解决
- 解决checkbox的onclick事件在ie浏览器各版本中不兼容问题
- 发布 Victor 串口 VCL 控件 1.5.0.2 / 1.3.3.6,解决兼容问题,支持5.0到XE5全系列C++ Builder版本
- iOS如何限制使用SDK的版本? 解决iOS项目的版本兼容问题
- android利用反射来解决版本兼容问题。
- struts包版本和tomcat版本兼容解决问题
- 解决支持库版本兼容问题:all com.android.support libraries must use the exact same version specification
- S60模拟器与java1.6版本不兼容问题的解决
- 解决qcow2高版本兼容问题
- 解决IE兼容问题的一种思路-HTML判断IE版本
- html5新标签【placeholder】解决浏览器低版本不兼容问题
- 解决GridLayout在安卓4.0以下版本中兼容问题
- 用条件注释判断浏览器版本,解决兼容问题
- 解决html5新标签 placeholder 低版本浏览器下不兼容问题
- Microsoft ReportViewer 控件类型版本兼容问题及解决方法
- 解决Opencv高低版本不兼容问题