基于Tomcat7的WebSocket.兼容IE(客户端需Flash10)
有点时间.研究了一下.发现Tomcat7.0.27 和jetty 都有支持.
把这个几天研究的结果记录一下
检索资料:
基于Tomcat的WebSocket(5月8日更新)
jquery websocket 插件
Flash Socket通信的安全策略问题 843端口
C++与Flex之间socket通信policy-file-request解决方案
https://github.com/gimite/web-socket-js 这插件用来做兼容性的
服务端程序直接拿 Tomcat示例源码. 代码位置见Tomcat_HOME\webapps\examples\WEB-INF\classes\websocket\chat\*
有几个问题备注:
1. Tomcat 7.0.27 版本 20秒如果不发送消息,就会掉线. 基于Tomcat的WebSocket(5月8日更新) 这里 19楼 yaolifei 童鞋的回答.我的做法就是每隔10秒发送一个字符到服务器. 好在 下一版会解决.
2. 当前的7.0.27版本 ,WebScoket中 request.getSession() 获取不到任何东西.经过测试观察.还会把整个当前站点的session销毁. 所以在网上也看到直接在websocketServlet中获取session.十分的不解.(设置会话属性在其他普通servlet中)
3. flash的安全机制问题.需要服务器另开一个843端口的socket连接.用来处理策略文件.和flex在http交互中的crossdomain类似.
4. 目前我处理不能获取session,是通过连接websocket时传递参数来实现的.不知道有没有其他方式
5. 测试过程中发现 opera , IE9 , qq浏览器(包括360这样的) 都不支持websocket . 但是遨游支持了.
代码片段:
web.xml
<listener> //这里用于启动和关闭843端口的socket<listener-class>cn.vs9.chat.listener.ServletContextListener</listener-class></listener> <servlet> //这个直接抄Tomcat示例<servlet-name>chat</servlet-name><servlet-class>cn.vs9.chat.servlet.websocket.ChatWebSocketServlet</servlet-class></servlet><servlet-mapping><servlet-name>chat</servlet-name><url-pattern>/chat/chat.htm</url-pattern></servlet-mapping>
聊天页面: web-socket-js 判断当前浏览器是否原声支持websocket,如果不支持,就使用flash
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title></title> <style> </style> <script type="text/javascript" src="scripts/swfobject.js"></script> <script type="text/javascript" src="scripts/jquery.js"></script> <script type="text/javascript" src="scripts/web_socket.js"></script> <script type="text/javascript" src="scripts/jquery.WebSocket.js"></script><script> var ws; var WEB_SOCKET_SWF_LOCATION = 'media/WebSocketMain.swf'; var WEB_SOCKET_DEBUG = true;$(function() {$("#sendBtn").on("click",send);connection();});function connection(){ws = $.websocket({ domain:"127.0.0.1", protocol:"WebSocketDemo/chat/chat.htm" , onOpen:function(event){ showMessage("已成功登录"); }, onError:function(event){alert("error:"+ event)}, onMessage:function(result){ receiveMessage(result);},onClose:function(event){ws = null;}}); }function send(){if(!ws){alert("已经断开聊天室");return;}var msg=$.trim($("#messageInput").val());if(msg==""){return;}ws.send(msg); $("#messageInput").val("").focus();;}function receiveMessage(result){showMessage(result);}function showMessage(msg){$("#public").append("<div>"+msg+"</div>");}</script> </head> <body><div id="public" style="height:500px;border:1px solid;"></div><div class="input"><input type="text" id="messageInput" onKeyDown="if (event.keyCode==13)$('#sendBtn').click()" maxlength="100" size="40" tabindex="1" /> <input type="button" id="sendBtn" value="提交" > </div></body> </html>
效果: 据说是IE8 也能,我的是IE9,有兴趣的测试吧
上源码:
WebScoket Demo下载地址
基于Tomcat7的WebSocket.兼容IE(客户端需Flash10)相关推荐
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
2019独角兽企业重金招聘Python工程师标准>>> 基于Tomcat7.Java.WebSocket的服务器推送聊天室 转载于:https://my.oschina.net/u/ ...
- weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现
传统业务实现 Websocket 并不难,然而函数计算基本上都是事件驱动,不支持长链接操作.如果将函数计算与 API 网关结合,是否可以有 Websocket 的实现方案呢? API 网关触发器实现 ...
- netty 游戏服务器框图_基于Netty和WebSocket协议实现Web端自动打印订单服务方法与流程...
本发明涉及电子商务技术领域,尤其涉及一种基于netty和websocket协议实现web端自动打印订单服务方法. 背景技术: 电子商务是以信息网络技术为手段,以商品交换为中心的商务活动:也可理解为在互 ...
- class没有发布到tomcat_基于Tomcat的Websocket范例及permessage-deflate扩展特性的研究
0x00 前言 当前已经成为和空气水食物并列的生存必需品的互联网,其典型的应用大多采用基于HTTP协议的B/S这一基础架构.作为自1994网景发布第一款浏览器以来就存在的这一技术体系,尽管20多年来不 ...
- websocket 更新点位 浏览器卡顿_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
php自学中心 2019-11-08 10:25:30 文章来自:laravel学院WebSocket 概述 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 H ...
- 基于netty的websocket协议实现
基于netty的websocket协议实现 背景 1.启动服务端 2.测试服务端和客户端效果 背景 项目中使用到了websocket,所以查阅相关资料,完成了一个基于netty的websocket的实 ...
- 简易 IM 双向通信电脑端 GUI 应用——基于 Netty、WebSocket、JavaFX 、多线程技术等
简易 IM 双向通信电脑端 GUI 应用--基于 Netty.WebSocket.JavaFX .多线程技术等 说明 运行效果 核心代码 完整代码 参考知识 说明 这是一款使用 Netty 来实现 ...
- hbuilderx内置服务器启动失败_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
文章来自:laravel学院 WebSocket 概述 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 HTTP 协议来实现握手,然后通过请求报文中的 Upgr ...
- 基于Node.js + WebSocket 的简易聊天室
代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...
最新文章
- 英特尔2022年投资者大会:公布技术路线图及重要节点
- django之Ajax
- pre标签 首行会自动换行解决方案
- 定制化Azure站点Java运行环境(1)
- 在游戏中强制关机,不能对关机提示框进行操作
- Visual C# 2008+SQL Server 2005 数据库与网络开发--9.1.1 SQL Server 2005中的XML功能
- 计算机二级基础知识教材,国家计算机二级考试公共基础知识教材
- 《leetcode》single-number-ii
- IT应聘者的简历应该是怎么样的?
- 大学计算机教学ppt数制,大学计算机基础 第3讲 数制及其相互转换 国家精品课程课件(可编辑)...
- 你鼓舞了我是世界杯主题曲吗_选择方法和鼓舞人心的网站列表
- 《诛仙Ⅰ》票房破3亿 QQ阅读《诛仙》小说全平台收入增长11.7倍
- 感知机原理及代码实现小结
- 【转】互联网架构的三板斧
- 简单的Java代码实现斗地主
- vue引入iconfont阿里矢量图库
- HP M1136 USB 连接安装驱动 提示“新设备已连接” 解决方案
- 【SEAN的日志】如何突破微信小程序2M限制?
- C# 日期插入access数据库
- 小鲲Python嘎嘎炫~day2