21xrx.com
2025-04-24 05:47:03 Thursday
文章检索 我的文章 写文章
使用Java WebSocket实现实时数据推送
2023-06-15 16:23:50 深夜i     29     0
Java WebSocket

随着Web应用程序的发展,实时数据传输成为了必要的功能。而Java WebSocket是一个非常好的实现实时数据传输的技术。本文将讲述Java WebSocket的使用和实现,以及一个实时数据推送的例子。

首先,我们需要引入javax.websocket库:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;
@ServerEndpoint("/websocket")
public class WebSocketDemo {
  private static CopyOnWriteArrayList
  sessions = new CopyOnWriteArrayList<>();
 
  //接受数据
  @OnMessage
  public void receiveMessage(String msg) {
    System.out.println("received Message:" + msg);
    for (Session session : sessions) {
      try {
        session.getBasicRemote().sendText(msg);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
  //连接成功触发
  @OnOpen
  public void onOpen(Session session) {
    System.out.println("Open connection");
    sessions.add(session);
  }
  //连接关闭触发
  @OnClose
  public void onClose(Session session) {
    System.out.println("Close connection");
    sessions.remove(session);
  }
  //错误发生触发
  @OnError
  public void onError(Session session, Throwable error) {
    System.out.println("Error happened");
    error.printStackTrace();
  }
}

在上述代码中,我们通过`@ServerEndpoint`标签指定连接的URL为 `/websocket`,并且实现了4个方法:

- `@OnOpen` 表示 WebSocket 打开时的回调。

- `@OnMessage` 表示 WebSocket 收到消息时的回调。

- `@OnClose` 表示 WebSocket 关闭时的回调。

- `@OnError` 表示 WebSocket 错误发生时的回调。

我们在 `receiveMessage` 方法中通过遍历 sessions 发送消息给每一个连接上的客户端,实现了实时推送的效果。

下面我们看一下前端代码:

WebSocket Demo
   
 
  
WebSocket Demo

我们创建了一个 WebSocket 对象,连接到了我们的服务器。在 `ws.onmessage` 里面我们打印了收到的消息,如果你在前端发送了消息,我们会在后台控制台看到收到的消息。使用 WebSocket 很简单,`ws.send()` 可以发送数据到服务器。

、实时数据推送、@ServerEndpoint。

  
  

评论区