1、使用框架spring+springmvc+mybatis+jdk7+tomcat7+maven

2、基本原理:

    a. WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是 它和http最大的不同有两点:

1.WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动地向对方发送或接收数据,就像Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议;

2.WebSocket需要通过握手连接,类似于TCP它也需要客户端和服务器端进行握手连接,连接成功后才能相互通信。

    b.struts   和 websocket  是2条处理请求的路,被struts 匹配上了 ,自然就到不了 websocket的处  理逻辑,(http和ws是两种不同的请求协议,注意框架的拦截器(过滤器))

3、客户端:

<html>
<head><title>Title</title><style>div {margin-left: auto;margin-right: auto;}</style>
</head>
<body onLoad="startWebSocket()">
<script type="text/javascript">function clog(title) {console.log(title);}var ws = null;function startWebSocket() {if ('WebSocket' in window) {try {ws = new WebSocket("ws://127.0.0.1:80/websocket/tui");} catch (e) {clog("1");}} else if ('MozWebSocket' in window) {ws = new MozWebSocket("ws://127.0.0.1:80/websocket/tui");} else {clog("websocket not support");}ws.onmessage = function (evt) {say(evt.data);};ws.onclose = function (evt) {clog("close!");};ws.onopen = function (evt) {clog("open");};}function sendMsg() {ws.send(document.getElementById('writeMsg').value);}function say(msg) {var div = document.createElement("div");div.innerHTML = msg;document.body.appendChild(div);}</script>
<div onClick="say('d')">WebSocket聊天室</div>
<div style="border:1px solid #09F"></div>
<input type="text" id="writeMsg"/>
<input type="button" value="send" onClick="sendMsg()"/></body>
</html>

4、服务端:

@ServerEndpoint(value = "/websocket/tui")
public class WebSocketDemo{private static final String GUEST_PREFIX = "Guest";private static final AtomicInteger connectionIds = new AtomicInteger(0);private static final Set<WebSocketDemo> connections = new HashSet<>();private final String nickname;private Session session;public WebSocketDemo() {nickname = GUEST_PREFIX + connectionIds.getAndIncrement();}//建立连接
    @OnOpenpublic void start(Session session) {this.session = session;connections.add(this);String message = String.format("* %s %s", nickname, "has joined.");System.out.println(message);}//接受消息
    @OnMessagepublic void incoming(String message) {System.out.println(message.toString());//broadcast(filteredMessage);
        broadcast(message.toString());}//客户端关闭了连接
    @OnClosepublic void end() {connections.remove(this);String message = String.format("* %s %s", nickname, "has disconnected.");System.out.println(message);//broadcast(message);
    }//WebSocket服务出错
    @OnErrorpublic void onError(Throwable t){//log.error("Chat Error: " + t.toString(), t);System.out.println("server has an error!");}private static void broadcast(String msg) {for (WebSocketDemo client : connections) {try {synchronized (client) {client.session.getBasicRemote().sendText(msg);}} catch (IOException e) {//log.debug("Chat Error: Failed to send message to client", e);
                connections.remove(client);try {client.session.close();} catch (IOException e1) {// Ignore
                }String message = String.format("* %s %s",client.nickname, "has been disconnected.");broadcast(message);}}}
}

注意事项:

1、访问拦截器

2、注意部署的包冲突,例如:javax.websocket只是编译需要,而发布不需要,maven依赖注意适用范围

附:

<!--websocket编译需要,发布不需要-->
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-coyote -->
<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-coyote</artifactId><version>7.0.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-juli -->
<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-juli</artifactId><version>8.5.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.websocket/javax.websocket-api -->
<dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1</version><scope>provided</scope>
</dependency>

转载于:https://www.cnblogs.com/yuan951/p/6245845.html

jee websocket搭建总结相关推荐

  1. 使用WebSocket搭建一个智能聊天系统

    大家都知道WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. 自从html5支持websocket以后 ...

  2. Nodejs+webSocket搭建多人聊天室

    NodeJs+webSocket搭建多人聊天室 准备的东西: 第一步:安装插件并且完善服务端 第二步 :搭建客户端并与服务端的通信 第三步 :添加CSS样式 第四步:总结 今天花了一个上午的时间去学习 ...

  3. webSocket搭建简易聊天室(后端实现)

    准备材料 一个可以测试websocket的网站:http://coolaf.com/tool/chattest consul(服务注册中心) 1. 搭建环境 新建spring项目的操作略过,引入依赖 ...

  4. rudesocket如何使用_[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebS...

    前言 本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性. 源代码来自老外的一篇好文: 本文内容摘要: 初步理解WebSocket的前后端交互逻辑 手把手使用 SpringBoot ...

  5. netty案例,netty4.1中级拓展篇五《基于Netty搭建WebSocket,模仿微信聊天页面》

    前言介绍 本章节我们模仿微信聊天页面,开发一个基于Netty搭建WebSocket通信案例.Netty的应用方面非常广:聊天.MQ.RPC.数据等等,在5G到来的时候更加需要大量数据传输,Netty的 ...

  6. swoole各种服务器初步搭建

    1.TCP搭建 <?php $host = '192.168.50.66'; $port = 9501; $serv = new swoole_server($host,$port); $ser ...

  7. .net core 和 WPF 开发升讯威在线客服系统:使用 WebSocket 实现访客端通信

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 文章目录列表请点击这里 对于在线客服与营销系统,访客端是指浏览网站的互联网用户,或是通过APP.微信等 ...

  8. websocket 超时重新连接

    之前写了一篇怎么用websocket搭建智能聊天的一个功能,然后有人反馈我,问我下面这个问题 浏览器端怎么处理 websocket 超时重新连接?如果断网情况下,然而网络恢复后的重连接? 今天告诉你们 ...

  9. nodejs websocket 实现简易聊天室功能

    文章目录 1. 服务端 app.js 代码 2. 客户端 app.html 代码 3. 样式代码 app.css 4. nodemon 辅助开发 首先说明,以下代码都是基于 Nodejs+webSoc ...

最新文章

  1. Vue+axios配置踩坑记录
  2. html导航去下划线,纯CSS实现导航栏下划线跟随的示例代码
  3. Oracle11g新特性注意事项
  4. 《操作系统》课程设计报告——用JAVA语言模仿实现“吃水果”问题
  5. Java集合框架:Arrays工具类
  6. ADO.NET中在C/S模式中使用的连接池
  7. python3 class init_python3 module中__init__.py的需要注意的地方
  8. 深入了解HashMap
  9. 创业过程中一定会引进纯资金投资人
  10. F2工作流引擎之 工作流运转模型(三)
  11. 【转】关于python中re模块split方法的使用
  12. e盾服务端源码_学习ZooKeeper源码,就从这篇开始吧
  13. 视觉测量为什么要考虑畸变
  14. C++ 入门5 ---- 类和动态内存分配(一)
  15. 2016matlab打开toolbox,MATLAB2016添加工具箱toolbox方法,有截图
  16. BGLL算法 C++实现
  17. SAP License:第三只眼看财务-留存收益与职业道德
  18. store buffer and invalidate queues
  19. 首届“中科杯”全国软件设计大赛获奖名单揭晓
  20. 如何用python爬取豆瓣图书 Top 250

热门文章

  1. ci获取当前url链接的分组,控制器,方法
  2. 用Java或Jsp向数据库存取二进制图片
  3. Bitmap 索引 vs. B-tree 索引:如何选择以及何时使用?——2-5
  4. 使用临界区 CRITICAL_SECTION 实现互斥
  5. Django modules模块
  6. 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
  7. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
  8. 2017.07.05 第五组 NABCD+用户原型+用户调研
  9. 禁止冒名顶替Exchange用户发送邮件
  10. Java虚拟机学习 - 类加载器(ClassLoader)