有点时间.研究了一下.发现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)相关推荐

  1. 基于Tomcat7、Java、WebSocket的服务器推送聊天室

    2019独角兽企业重金招聘Python工程师标准>>> 基于Tomcat7.Java.WebSocket的服务器推送聊天室 转载于:https://my.oschina.net/u/ ...

  2. weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现

    传统业务实现 Websocket 并不难,然而函数计算基本上都是事件驱动,不支持长链接操作.如果将函数计算与 API 网关结合,是否可以有 Websocket 的实现方案呢? API 网关触发器实现 ...

  3. netty 游戏服务器框图_基于Netty和WebSocket协议实现Web端自动打印订单服务方法与流程...

    本发明涉及电子商务技术领域,尤其涉及一种基于netty和websocket协议实现web端自动打印订单服务方法. 背景技术: 电子商务是以信息网络技术为手段,以商品交换为中心的商务活动:也可理解为在互 ...

  4. class没有发布到tomcat_基于Tomcat的Websocket范例及permessage-deflate扩展特性的研究

    0x00 前言 当前已经成为和空气水食物并列的生存必需品的互联网,其典型的应用大多采用基于HTTP协议的B/S这一基础架构.作为自1994网景发布第一款浏览器以来就存在的这一技术体系,尽管20多年来不 ...

  5. websocket 更新点位 浏览器卡顿_我们来看看Swoole是如何实现WebSocket服务器及客户端的...

    php自学中心 2019-11-08 10:25:30 文章来自:laravel学院WebSocket 概述 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 H ...

  6. 基于netty的websocket协议实现

    基于netty的websocket协议实现 背景 1.启动服务端 2.测试服务端和客户端效果 背景 项目中使用到了websocket,所以查阅相关资料,完成了一个基于netty的websocket的实 ...

  7. 简易 IM 双向通信电脑端 GUI 应用——基于 Netty、WebSocket、JavaFX 、多线程技术等

    简易 IM 双向通信电脑端 GUI 应用--基于 Netty.WebSocket.JavaFX .多线程技术等 说明 运行效果 核心代码 完整代码 参考知识 说明   这是一款使用 Netty 来实现 ...

  8. hbuilderx内置服务器启动失败_我们来看看Swoole是如何实现WebSocket服务器及客户端的...

    文章来自:laravel学院 WebSocket 概述 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 HTTP 协议来实现握手,然后通过请求报文中的 Upgr ...

  9. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...

最新文章

  1. 英特尔2022年投资者大会:公布技术路线图及重要节点
  2. django之Ajax
  3. pre标签 首行会自动换行解决方案
  4. 定制化Azure站点Java运行环境(1)
  5. 在游戏中强制关机,不能对关机提示框进行操作
  6. Visual C# 2008+SQL Server 2005 数据库与网络开发--9.1.1 SQL Server 2005中的XML功能
  7. 计算机二级基础知识教材,国家计算机二级考试公共基础知识教材
  8. 《leetcode》single-number-ii
  9. IT应聘者的简历应该是怎么样的?
  10. 大学计算机教学ppt数制,大学计算机基础 第3讲 数制及其相互转换 国家精品课程课件(可编辑)...
  11. 你鼓舞了我是世界杯主题曲吗_选择方法和鼓舞人心的网站列表
  12. 《诛仙Ⅰ》票房破3亿 QQ阅读《诛仙》小说全平台收入增长11.7倍
  13. 感知机原理及代码实现小结
  14. 【转】互联网架构的三板斧
  15. 简单的Java代码实现斗地主
  16. vue引入iconfont阿里矢量图库
  17. HP M1136 USB 连接安装驱动 提示“新设备已连接” 解决方案
  18. 【SEAN的日志】如何突破微信小程序2M限制?
  19. C# 日期插入access数据库
  20. 小鲲Python嘎嘎炫~day2

热门文章

  1. iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
  2. python专业版与社区版的区别_pycharm专业版和社区版区别
  3. Android 终端性能测试
  4. matlab三相短路电流计算程序_电力系统三相短路计算的MATLAB代码.doc
  5. 图像卷积及其Python实现
  6. 经典战役—2004Nollelva之狭路相逢勇者胜
  7. funannotate安装
  8. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java安徽省旅游信息网站ds6p5
  9. 通过LCD1602来了解时序
  10. 牛!各种变态的数独谜题