使用 WebSocket 统计并显示在线用户数目
可以使用 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事件监听来自服务器的消息。当有新的消息到达时,将在线用户数目更新到页面上。
以上是一个简单的示例,你可以根据自己的需求进行修改和扩展。
原文地址: http://www.cveoy.top/t/topic/h91b 著作权归作者所有。请勿转载和采集!