- spring 4.0及以上增加了WebSocket的支持(这里使用4.2.5.RELEASE)。
- spring 支持STOMP协议的WebSocket通信。
应对不支持 WebSocket 的场景,许多浏览器不支持 WebSocket 协议;SockJS 是 WebSocket 技术的一种模拟。SockJS 会 尽可能对应 WebSocket API,但如果 WebSocket 技术 不可用的话,会从如下 方案中挑选最优可行方案:
WebSocket 是发送和接收消息的 底层API,而SockJS 是在 WebSocket 之上的 API;最后 STOMP(面向消息的简单文本协议)是基于 SockJS 的高级API。
- SockJS 所处理的URL 是 “http:” 或 “https:” 模式
- WebSocket 所处理的URL 是“ws:” or “wss:” 模式
Tomcat8整合websocket
使用 tomcat8 开发 WebSocket 服务端非常简单,大致有如下两种方式。
- 使用注解方式开发,被 @ServerEndpoint 修饰的 Java 类即可作为 WebSocket 服务端
- 继承 Endpoint 基类实现 WebSocket 服务端
开发被 @ServerEndpoint 修饰的类之后,该类中还可以定义如下方法。
- @OnOpen 修饰的方法:当客户端与该 WebSocket 服务端建立连接时激发该方法
- @OnClose 修饰的方法:当客户端与该 WebSocket 服务端断开连接时激发该方法
- @OnMessage 修饰的方法:当 WebSocket 服务端收到客户端消息时激发该方法
- @OnError 修饰的方法:当客户端与该 WebSocket 服务端连接出现错误时激发该方法。