21xrx.com
2024-12-22 22:56:07 Sunday
登录
文章检索 我的文章 写文章
使用Java WebSocket实现实时数据推送
2023-06-15 16:23:50 深夜i     --     --
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。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复