工作中有这样一个需示,我们把项目中用到代码缓存到前端浏览器IndexedDB里面,当系统管理员在后台对代码进行变动操作时我们要更新前端缓存中的代码怎么做开始用想用版本方式来处理,但这样的话每次使用代码之前都需要调用获取版本API来判断版本是否有变化来是否更新本地代码,这样的话对服务器造成很大的压力。后来考虑http慢轮讯方式,最后了解到WebSocket这简直是神器,以后还可用来扩展项目中的即时聊天功能。
WebSocket是什么
我们知道HTTP协议都是先由浏览器向服务器发送请求,服务器响应这个请求,再把数据发送给浏览器。 如果需要服务器发送消息给浏览器怎么办 WebSocket是HTML5新增的协议,让浏览器和服务器之间可以建立无限制的全双工通信,任何一方都可以主动发消息给对方。
SpringBoot-Websocket-Demo
项目介绍
springboot 2.1.6.RELEASE
spring-boot-starter-websocket
本项目主要为了测试springboot集成websocket实现向前端浏览器发送一个对象,发送消息操作手动触发。
代码说明
1.新建spingboot项目
2.加入WebSocket依赖
org.springframework.boot
spring-boot-starter-websocket
3.WebSocketConfig
开启WebSocket支持
package com.example.socket;
/**
* @author muyuer 182443947@qq.com
* @version 1.0
* @date 2019-07-22 18:16
*/
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* 开启WebSocket支持
* @author zhengkai
*/
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
4.WebSocketServer
WebSocket采用ws协议,这里的WebSocketServer类似于一个ws协议的Controller
package com.example.socket;
import cn.hutool.json.JSONUtil;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websock