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

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

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

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

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

添加依赖

在pom.xml文件中添加WebSocket和Spring Boot的相关依赖:l7X28资讯网——每日最新资讯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的配置:l7X28资讯网——每日最新资讯28at.com

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

创建WebSocket处理程序

创建一个类来处理WebSocket连接和消息:l7X28资讯网——每日最新资讯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通信的消息类:l7X28资讯网——每日最新资讯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消息代理:l7X28资讯网——每日最新资讯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();    }}

创建服务类

创建一个服务类用于处理在线用户的统计逻辑:l7X28资讯网——每日最新资讯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类,使用服务类获取在线用户数:l7X28资讯网——每日最新资讯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。l7X28资讯网——每日最新资讯28at.com

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 三言两语说透设计模式的艺术-单例模式

    三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 如何正确使用:Has和:Nth-Last-Child

    如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 十个简单但很有用的Python装饰器

    十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 最薄的14英寸游戏笔记本电脑  Alienware X14已可以购买

    最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
Top