当前位置:首页 > 科技  > 软件

在Spring Boot中使用WebSocket实现实时在线人数统计

来源: 责编: 时间:2023-11-28 09:37:05 344观看
导读在Spring Boot中使用WebSocket实现实时在线人数统计在Spring Boot中使用WebSocket实现实时在线人数统计可以通过以下步骤完成。首先,需要添加相关的依赖和配置,然后创建WebSocket处理程序和相应的服务类。添加依赖在pom

在Spring Boot中使用WebSocket实现实时在线人数统计uMl28资讯网——每日最新资讯28at.com

在Spring Boot中使用WebSocket实现实时在线人数统计可以通过以下步骤完成。首先,需要添加相关的依赖和配置,然后创建WebSocket处理程序和相应的服务类。uMl28资讯网——每日最新资讯28at.com

添加依赖

在pom.xml文件中添加WebSocket和Spring Boot的相关依赖:uMl28资讯网——每日最新资讯28at.com

<dependencies>    <!-- Spring Boot Starter Web包含了Spring MVC和其他相关依赖 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- Spring Boot Starter WebSocket -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-websocket</artifactId>    </dependency></dependencies>

配置WebSocket

在application.properties文件中添加WebSocket的配置:uMl28资讯网——每日最新资讯28at.com

# WebSocket端口号server.port=8080# WebSocket端点spring.websocket.endpoint=/ws

创建WebSocket处理程序

创建一个类来处理WebSocket连接和消息:uMl28资讯网——每日最新资讯28at.com

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.messaging.simp.SimpMessagingTemplate;import org.springframework.stereotype.Controller;@Controllerpublic class WebSocketController {    private final SimpMessagingTemplate messagingTemplate;    private final OnlineUsersService onlineUsersService;    @Autowired    public WebSocketController(SimpMessagingTemplate messagingTemplate, OnlineUsersService onlineUsersService) {        this.messagingTemplate = messagingTemplate;        this.onlineUsersService = onlineUsersService;    }    @MessageMapping("/hello")    public void greeting(WebSocketRequest request) {        // 处理收到的消息,这里可以更新在线用户数等业务逻辑        // 在用户连接时调用此方法        onlineUsersService.userConnected(request.getName());        int onlineUsers = onlineUsersService.getOnlineUsersCount();        WebSocketResponse response = new WebSocketResponse("当前在线人数:" + onlineUsers);        // 向客户端发送更新后的在线用户数        messagingTemplate.convertAndSendToUser(request.getName(), "/topic/onlineUsers", response);    }}

创建WebSocket消息类

创建用于WebSocket通信的消息类:uMl28资讯网——每日最新资讯28at.com

public class WebSocketRequest {    private String name;    // Getter and Setter}javaCopy codepublic class WebSocketResponse {    private String content;    public WebSocketResponse(String content) {        this.content = content;    }    // Getter}

配置WebSocket消息代理

在@SpringBootApplication注解的主应用程序类中添加配置,以启用WebSocket消息代理:uMl28资讯网——每日最新资讯28at.com

import org.springframework.context.annotation.Configuration;import org.springframework.messaging.simp.config.MessageBrokerRegistry;import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;import org.springframework.web.socket.config.annotation.StompEndpointRegistry;import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer {    @Override    public void configureMessageBroker(MessageBrokerRegistry config) {        // 启用简单的消息代理,以将消息发送到指定的前缀        config.enableSimpleBroker("/topic");        // 设置应用程序的消息目标前缀        config.setApplicationDestinationPrefixes("/app");    }    @Override    public void registerStompEndpoints(StompEndpointRegistry registry) {        // 注册一个WebSocket端点,供客户端连接        registry.addEndpoint("/ws").withSockJS();    }}

创建服务类

创建一个服务类用于处理在线用户的统计逻辑:uMl28资讯网——每日最新资讯28at.com

import org.springframework.stereotype.Service;import java.util.HashSet;import java.util.Set;@Servicepublic class OnlineUsersService {    // 使用Set存储在线用户的唯一标识,例如用户ID    private final Set<String> onlineUserIds = new HashSet<>();    // 用户连接时调用,将用户ID添加到在线用户集合中    public void userConnected(String userId) {        onlineUserIds.add(userId);    }    // 用户断开连接时调用,将用户ID从在线用户集合中移除    public void userDisconnected(String userId) {        onlineUserIds.remove(userId);    }    // 获取在线用户数    public int getOnlineUsersCount() {        return onlineUserIds.size();    }}

更新WebSocket处理程序

更新WebSocketController类,使用服务类获取在线用户数:uMl28资讯网——每日最新资讯28at.com

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.messaging.simp.SimpMessagingTemplate;import org.springframework.stereotype.Controller;@Controllerpublic class WebSocketController {    private final SimpMessagingTemplate messagingTemplate;    private final OnlineUsersService onlineUsersService;    @Autowired    public WebSocketController(SimpMessagingTemplate messagingTemplate, OnlineUsersService onlineUsersService) {        this.messagingTemplate = messagingTemplate;        this.onlineUsersService = onlineUsersService;    }    @MessageMapping("/hello")    public void greeting(WebSocketRequest request) {        // 处理收到的消息,这里可以更新在线用户数等业务逻辑        int onlineUsers = onlineUsersService.getOnlineUsersCount();        messagingTemplate.convertAndSend("/topic/onlineUsers", "当前在线人数:" + onlineUsers);    }}

这样,当有用户连接到WebSocket并发送消息时,greeting方法将被调用,处理逻辑并将更新后的在线用户数发送到/topic/onlineUsers。uMl28资讯网——每日最新资讯28at.com

示例中完整代码,可以从下面网址获取:uMl28资讯网——每日最新资讯28at.com

https://gitee.com/jlearning/wechatdemo.gituMl28资讯网——每日最新资讯28at.com

https://github.com/icoderoad/wxdemo.gituMl28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-34675-0.html在Spring Boot中使用WebSocket实现实时在线人数统计

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 站点可靠性工程SRE最佳实践 -- 黄金监控信号

下一篇: Android使用SharedPreferences存储轻量级持久化数据

标签:
  • 热门焦点
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 超级标准版旗舰!iQOO 11S全球首发iQOO超算独显芯片

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
  • 荣耀Magic4 至臻版 首创智慧隐私通话 强劲影音系统

    2022年第一季度临近尾声,在该季度内,许多品牌陆续发布自己的最新产品,让大家从全新的角度来了解当今的手机技术。手机是电子设备中,更新迭代十分迅速的一款产品,基
Top