一、前言
前几篇WebSocket例子服务端我是用NodeJS实现,这一篇我们用Java来搭建一个WebSocket服务端,从2011年WebSocket协议RFC6455发布后,大多数浏览器都实现了WebSocket协议客户端的API,而对于服务端Java也定义了一个规范JSR356,即Java API for WebSocket规范,很多Web容器如Tomcat、Jetty等新版本都支持该规范。
二、JS R356

JSR356是JavaEE7标准的一部分,所有支持JavaEE7标准的应用服务器都有JSR356的WebSocket实现。
注:上面JSR356图上写成JSR365了,懒得改图了。
JSR36可以采用注解或接口来实现WebSocket生命周期方法的实现。
1、注解方式
- @ServerEndpoint("/websockets")
告诉容器此类是WebSocket服务端端点,
使用路径/websockets连接。
- @ClientEndpoint
告诉容器此类是WebSocket客户端端点。
- @OnOpen
一旦建立了WebSocket连接就会创建Session,
并调用该注解的方法
- @OnMessage
对方端点发送消息过来,调用该注解的方法。
- @OnClose
对方端点关闭连接时会调用该注解的方法。
- @OnError
如果异常错误就会调用该注解的方法。
2、实现接口方式
继承javax.websocket.Endpoint实现命令周期各个方法。
WebSocket JavaAPI支持消息类型
-
文本消息
-
二进制消息
-
pingpong消息
三、一个简单例子
使用内嵌Tomcat来运行WebSocket服务,webSocket依赖于容器的实现。
1、创建项目
使用IDEA创建 webapp maven工程。
2、pom.xml
添加Websocket以及内嵌Tomcat依赖。

3、Tomcat启动类 
4、WebSocketServer类
4、客户端代码
使用 WebSocket实战之一 代码 ,然后就可以向相互发送消息了。
四、SpringB oot整合WebSocket例子
使用SpringBoot整合WebSocket也很简单,因为Springboot内置了Tomcat。