SpringBoot集成WebSocket(实时消息推送)
以下是一个简化的Spring Boot集成WebSocket的例子,实现了消息的实时推送:
// 导入相关依赖的类
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.SpringConfigurator;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
// 使用@ServerEndpoint注解定义WebSocket endpoint
@ServerEndpoint(value = "/websocket", configurator = SpringConfigurator.class)
@Component
public class WebSocketServer {
// 保存所有的WebSocket连接
private static final CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>();
// 与某个客户端的连接会话
private Session session;
// 连接建立成功调用的方法
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this);
}
// 连接关闭调用的方法
@OnClose
public void onClose() {
webSocketSet.remove(this);
}
// 收到客户端消息后调用的方法
@OnMessage
public void onMessage(String message, Session session) {
// 可以根据业务需求处理客户端发送的消息
}
// 出现错误时调用
@OnError
public void onError(Session session, Throwable error) {
error.printStackTrace();
}
// 向所有客户端广播消息
public void broadcast(String message) {
webSocketSet.forEach(webSocket -> sendMessage(message));
}
// 服务端发送消息给客户端的方法
private void sendMessage(String message) {
try {
this.session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们定义了一个WebSocket服务端点/websocket
,并使用@ServerEndpoint
、@OnOpen
、@OnClose
、@OnMessage
和@OnError
注解来处理WebSocket的不同生命周期事件。broadcast
方法用于向所有连接的客户端发送消息。这个简单的例子展示了如何在Spring Boot应用程序中集成WebSocket,并实现服务端向客户端的消息推送。
评论已关闭