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

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

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

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

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

添加依赖

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

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

创建WebSocket处理程序

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

创建服务类

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 一篇文章带你了解 CSS 属性选择器

    一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 一个注解实现接口幂等,这样才优雅!

    一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 共享单车的故事讲到哪了?

    共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 猿辅导与新东方的两种“归途”

    猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对&ldquo;势&rdquo;的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 当家的盒马,加速谋生

    当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己&ldquo;当家&rdquo;的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top
Baidu
map