pom.xml配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
服务器端java
package com.csv.util;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
@Component
@ServerEndpoint("/webSocket")
public class WebSocket {
private Session session;
private static CopyOnWriteArraySet<WebSocket> webSockets=new CopyOnWriteArraySet<>();
private Timer timer = new Timer();
@Autowired
private DeviceDataService deviceDataService;
@Autowired
private ParameterTypeService parameterTypeService;
@Autowired
private DeviceService deviceService;
private BlockingQueue<Object> msgQueue=new LinkedBlockingDeque<Object>();
private static WebSocket webSocket;
@Autowired
private RedisTemplate<Serializable, Object> redisTemplate;
@PostConstruct
public void init() {
webSocket = this;
webSocket.redisTemplate=this.redisTemplate;
webSocket.deviceDataService=this.deviceDataService;
webSocket.parameterTypeService=this.parameterTypeService;
webSocket.deviceService=this.deviceService;
}
@OnOpen
public void onOpen(@PathParam("cId") String cId, Session session){
this.session=session;
webSockets.add(this);
System.out.println("有新的连接,总数"+webSockets.size());
timer.schedule(new TimerTask() {
public void run() {
sendMessage();
}
}, 0, 600);
}
@OnClose
public void onClose(){
timer.cancel();
webSockets.remove(this);
System.out.println("有新的断开,总数"+webSockets.size());
}
@OnMessage
public void onMessage(String message) throws IOException {
}
public void sendMessage() {
JsonUtils jsonUtils=new JsonUtils();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
Date date=new Date();
String time=df.format(date);
try {
this.session.getBasicRemote().sendText(jsonUtils.obj2String(time));
} catch (Exception e) {
e.printStackTrace();
}
}
}
页面html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>WebSocket</title>
</head>
<body>
<input id="text" type="text"/>
<button οnclick="send()">发送消息</button>
<hr/>
<button οnclick="closeWebSocket()">关闭WebSockeet连接</button>
<hr/>
<div id="message"></div>
</body>
</html>
<script type="text/javascript">
var webSocket=null;
var message=null;
//判断当前浏览器是否支持WebSocket
if ('WebSocket' in window){
webSocket=new WebSocket('ws://localhost:8099/webSocket')
} else{
alert("当前浏览器不支持WebSocket");
}
//连接发生错误的回调方法
webSocket.οnerrοr=function () {
setMessageInnerHTML("WebSocket连接发生错误!");
}
webSocket.onopen=function () {
setMessageInnerHTML("WebSocket连接成功!")
}
webSocket.onmessage=function (event) {
console.log(event.data);
message=event.data;
setMessageInnerHTML(event.data);
}
webSocket.onclose=function () {
setMessageInnerHTML("WebSocket连接关闭");
}
window.οnbefοreunlοad=function () {
closeWebSocket();
}
function closeWebSocket() {
webSocket.close();
}
function send() {
var message=document.getElementById('text').value;
webSocket.send(message);
}
//将消息显示在网页上
function setMessageInnerHTML(innerHTML) {
document.getElementById('message').innerHTML+=innerHTML+'<br/>';
}
</script>
socket连接成功
页面上的socket连接地址:ws://localhost:8099/webSocket
页面获取到数据展示: