可以使用 WebSocket 来实现一个监听器,统计并显示在线用户的数目。以下是一个简单的示例代码:

import javax.websocket.*;
import javax.websocket.server.*;

@ServerEndpoint(value = "/onlineUsers")
public class OnlineUsersListener {
    private static int onlineUsers = 0;

    @OnOpen
    public void onOpen(Session session) {
        onlineUsers++;
        updateOnlineUsersCount();
    }

    @OnClose
    public void onClose(Session session) {
        onlineUsers--;
        updateOnlineUsersCount();
    }

    @OnError
    public void onError(Session session, Throwable error) {
        // 处理错误
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        // 处理消息
    }

    private void updateOnlineUsersCount() {
        // 将在线用户数目发送给所有连接的客户端
        for (Session session : OnlineUsersRegistry.getAllSessions()) {
            try {
                session.getBasicRemote().sendText(String.valueOf(onlineUsers));
            } catch (Exception e) {
                // 处理发送消息失败的异常
            }
        }
    }
}

在上述代码中,使用了@ServerEndpoint注解将OnlineUsersListener类标记为一个 WebSocket 端点。当有新的 WebSocket 连接建立时,onOpen方法会被调用,增加在线用户数目并更新所有客户端的在线用户数目显示。当 WebSocket 连接关闭时,onClose方法会被调用,减少在线用户数目并更新所有客户端的在线用户数目显示。

在线用户数目会通过updateOnlineUsersCount方法发送给所有连接的客户端。OnlineUsersRegistry类是一个自定义的类,用于存储所有连接的 WebSocket 会话。你可以根据需要自行实现该类。

在前端页面中,可以使用 JavaScript 来建立 WebSocket 连接,并接收在线用户数目的更新。以下是一个简单的示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>在线用户数目</title>
    <script>
        var websocket = new WebSocket("ws://localhost:8080/onlineUsers");
        websocket.onmessage = function(event) {
            document.getElementById("onlineUsersCount").innerText = event.data;
        };
    </script>
</head>
<body>
    <h1>在线用户数目: <span id="onlineUsersCount">0</span></h1>
</body>
</html>

在上述代码中,WebSocket对象会与服务器建立连接,并通过onmessage事件监听来自服务器的消息。当有新的消息到达时,将在线用户数目更新到页面上。

以上是一个简单的示例,你可以根据自己的需求进行修改和扩展。

使用 WebSocket 统计并显示在线用户数目

原文地址: http://www.cveoy.top/t/topic/h91b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录