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

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

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

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

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

添加依赖

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

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

创建WebSocket处理程序

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

创建服务类

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就&ldquo;胡锡进炒股是否知道认真报道&rdquo;展开讨论。有
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    图片来源:图虫创意日前,Meta创始人兼CEO 马克&middot;扎克伯发布公开信,宣布Meta计划裁员超11000人,占其员工总数13%。他公开承认了自己的预判失误:&ldquo;不仅
Top