WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,广泛用于需要服务器主动推送数据的场景,如聊天应用、实时通知、在线游戏等。Java EE 7 起原生支持 WebSocket(JSR 356),开发者可通过注解或编程方式轻松实现。
WebSocket 与传统 HTTP 不同,它建立持久连接,允许服务端和客户端双向发送消息,无需频繁轮询。
@ServerEndpoint("/websocket")
public class MyWebSocketServer {
@OnOpen
public void onOpen(Session session) {
System.out.println("连接建立: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("收到消息: " + message);
try {
session.getBasicRemote().sendText("Echo: " + message);
} catch (IOException e) {
e.printStackTrace();
}
}
@OnClose
public void onClose(Session session) {
System.out.println("连接关闭: " + session.getId());
}
@OnError
public void onError(Throwable error) {
error.printStackTrace();
}
}
const ws = new WebSocket('ws://localhost:8080/your-app/websocket');
ws.onopen = () => {
console.log('连接已建立');
ws.send('Hello Server!');
};
ws.onmessage = (event) => {
console.log('收到消息:', event.data);
};
ws.onclose = () => {
console.log('连接已关闭');
};
@ServerEndpoint 注解一致。WebSocket 可与 Spring Boot 集成(使用 spring-websocket),提供更强大的配置与 STOMP 协议支持,适用于复杂实时系统。