一、需求
- 股价展示页面实时的获取股价更新
- 赛事的文字直播 实时更新赛况
-
二、服务端推送常用技术
全双工通信 webSocket
服务端主动推送SSE (server and event )直接建立在http协议上 长连接
三、双工通信webSocket
兼容HTTPS协议
- WebSocket的ws协议是基于HTTP
- WebSocket的wss协议是基于HTTPS
- 全双工数据交互
- onopen
- onmessage
群发
加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
实现websocketConfig
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
实现MyWebSocket
- 需要添加的注解
- @ ServerEndpoint(value=”/websocket”)
- @Compenent
变量声明
/**
* 静态变量,用来记录当前在线的连接数
*/
private static int onlineCount = 0;
/**
* concurrent包中的线程安全的Set,用来存放每个客户端MyWebSocket对象
*/
private static CopyOnWriteArraySet<MyWebSocket> myWebSockets = new CopyOnWriteArraySet<>();
/**
* 与某个客户端的连接会话
*/
private Session session;
实现方法
- 建立连接
- 连接关闭
- 封装基础的发送消息的操作
- 发送消息【添加@OnMessage注解】
- 群发消息
- 出现错误【添加@OnError注解】
- 建立连接
- 需要添加的注解
- 前端长时间和后台保持通讯的三种方式:ajax的setInterval、webSocket、SSE
- ajax长时间和服务端保持通讯太占内存
- websocket可以进行服务器和前端双向通讯
- SSE只能进行服务器往前端单向传送数据