1.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
``
2.配置websocket
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
3.测试
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@ServerEndpoint(value = "/websocket")
@Component
public class MyWebSocket {
/**
* 在线人数
*/
public static int onlineNumber = 0;
/**
* 所有的对象
*/
public static List<MyWebSocket> webSockets = new CopyOnWriteArrayList<MyWebSocket>();
/**
* 会话
*/
public Session session;
/**
* 建立连接
*
* @param session
*/
@OnOpen
public void onOpen(Session session) {
onlineNumber++;
webSockets.add(this);
this.session = session;
System.out.println("有新连接加入! 当前在线人数" + onlineNumber);
}
/**
* 连接关闭
*/
@OnClose
public void onClose() {
onlineNumber--;
webSockets.remove(this);
System.out.println("有连接关闭! 当前在线人数" + onlineNumber);
}
/**
* 收到客户端的消息
*
* @param message 消息
* @param session 会话
*/
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("来自客户端消息:" + message);
sendMessage("欢迎连接");
}
/**
* 发送消息
*
* @param message 消息
*/
public void sendMessage(String message) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.页面
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Index</title>
</head>
<body>
</body>
</html>
<script>
var webSocket;
if (window.WebSocket)
{
webSocket = new WebSocket("ws://localhost:8080/websocket");
//连通之后的回调事件
webSocket.onopen = function()
{
webSocket.send("发送数据");
};
//接收后台服务端的消息
webSocket.onmessage = function (evt)
{
/*var received_msg = evt.data;
var map1 = received_msg.map1;
var map2 = received_msg.map2;
console.log(map1);
console.log(map2);*/
alert(evt.data);
};
//连接关闭的回调事件
webSocket.onclose = function()
{
alert("连接已关闭...");
};
}
</script>