websocket向后端发送消息,springboot后端并接收
时间: 2023-07-12 12:31:23 浏览: 130
好的,我可以为你提供一些参考代码。首先,你需要在后端添加一个 WebSocket 处理器类,然后在其中处理消息的接收和发送。以下是一个简单的示例:
```java
@Component
@ServerEndpoint("/websocket")
public class WebSocketHandler {
private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
@OnMessage
public void onMessage(String message, Session session) {
// 处理接收到的消息
System.out.println("Received message: " + message);
// 发送消息到所有客户端
broadcast(message);
}
private void broadcast(String message) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上面的代码中,我们使用了 `@ServerEndpoint` 注解来标记一个 WebSocket 处理器类,这个类处理客户端连接、消息接收和消息发送。在 `onOpen` 方法中,我们将客户端的会话对象添加到一个线程安全的集合中,以便后面可以将消息发送到所有客户端。在 `onClose` 方法中,我们将会话对象从集合中删除,保证所有客户端都能及时收到通知。在 `onMessage` 方法中,我们处理接收到的消息,并调用 `broadcast` 方法将消息发送到所有客户端。
接下来,你需要在前端代码中使用 WebSocket API 来与后端建立连接,发送消息并接收后端发送的消息。以下是一个简单的示例:
```javascript
var socket = new WebSocket("ws://localhost:8080/websocket");
socket.onopen = function() {
console.log("WebSocket connected");
};
socket.onmessage = function(event) {
console.log("Received message: " + event.data);
};
socket.onclose = function() {
console.log("WebSocket disconnected");
};
function sendMessage(message) {
socket.send(message);
}
```
在上面的代码中,我们使用 `new WebSocket` 创建一个 WebSocket 实例,并传入后端的 WebSocket 地址,这里是 `ws://localhost:8080/websocket`。在 `onopen` 方法中,我们打印一条连接成功的日志。在 `onmessage` 方法中,我们处理接收到的消息,并打印一条日志。在 `onclose` 方法中,我们打印一条连接断开的日志。最后,我们定义了 `sendMessage` 函数,用于向后端发送消息。
希望这个示例能够帮助你了解如何使用 Spring Boot 和 WebSocket 实现消息的接收和发送。
阅读全文