websocket向前端实时推送数据 java代码
时间: 2023-08-12 11:36:57 浏览: 126
下面是一个简单的 Java WebSocket 服务端示例,它可以向前端实时推送数据:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;
@ServerEndpoint("/websocket")
public class WebSocketServer {
private static CopyOnWriteArrayList<Session> sessions = new CopyOnWriteArrayList<>();
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnMessage
public void onMessage(String message, Session session) {
// 收到客户端消息
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
@OnError
public void onError(Session session, Throwable error) {
// 发生错误
}
public static void sendMessage(String message) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上面的代码中,我们定义了一个 `/websocket` 的 WebSocket 服务端点,并使用 `@ServerEndpoint` 注解来标记它。`onOpen` 方法会在客户端连接时触发,`onClose` 方法会在客户端断开连接时触发,`onError` 方法会在发生错误时触发,`onMessage` 方法会在接收到客户端消息时触发。`sendMessage` 方法用于向客户端推送数据。
你可以在你的 Java 代码中调用 `WebSocketServer.sendMessage` 方法来向客户端推送数据。例如:
```java
WebSocketServer.sendMessage("Hello, world!");
```
在前端,你可以使用 JavaScript WebSocket API 来连接 WebSocket 服务端,并处理收到的数据。例如:
```javascript
let socket = new WebSocket("ws://localhost:8080/websocket");
socket.onmessage = function(event) {
console.log("Received data: " + event.data);
};
```
阅读全文