返回顶部
首页 > 资讯 > 精选 >springboot整合websocket如何实现群聊
  • 896
分享到

springboot整合websocket如何实现群聊

2023-06-15 06:06:25 896人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关SpringBoot整合websocket如何实现群聊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现思路发送者向服务器发送大家早上好。其它客户端可以收到对应消息。项目展示通

这篇文章将为大家详细讲解有关SpringBoot整合websocket如何实现群聊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

实现思路

springboot整合websocket如何实现群聊

发送者向服务器发送大家早上好。其它客户端可以收到对应消息。

项目展示

springboot整合websocket如何实现群聊

通过springboot引入WEBSocket,实现群聊,通过在线websocket测试进行展示。

核心代码

pom引入jar

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.3.10.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-lang3</artifactId>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.18.12</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-websocket</artifactId>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastJSON</artifactId>            <version>1.2.62</version>        </dependency>    </dependencies>

使用springboot 2.3.10.RELEASE版本;java8

WebSocketConfig配置类

@Configurationpublic class WebSocketConfig{   @Bean   public ServerEndpointExporter serverEndpointExporter() {      return new ServerEndpointExporter();   }}

websocket有4个注解,解释如下

  • @OnOpen 有新连接

  • @OnMessage 有新消息时

  • @OnClose 关闭连接

  • @OnError 连接异常

对于这个4个注解,配置在方法上即可。

WebsocketServerEndpoint接收类

@Slf4j@Controller@ServerEndpoint ("/")public class WebsocketServerEndpoint{   @OnOpen   public void onOpen(Session session, EndpointConfig config) {      log.info("[onOpen][session({}) 接入]", session);      WebSocketUtil.broadcast (session.getId ()+"上线了");      WebSocketUtil.addSession (session);   }   @OnMessage   public void onMessage(Session session, String message) {      WebSocketUtil.broadcast (message);      log.info("[onOpen][session({}) 接收到一条消息({})]", session, message); // 生产环境下,请设置成 debug 级别   }   @OnClose   public void onClose(Session session, CloseReason closeReason) {      WebSocketUtil.removeSession (session);      WebSocketUtil.broadcast (session.getId ()+"下线了");      log.info("[onClose][session({}) 连接关闭。关闭原因是({})}]", session, closeReason);   }   @OnError   public void onError(Session session, Throwable throwable) {      log.info("[onClose][session({}) 发生异常]", session, throwable);   }}

WebSocketUtil工具

@Slf4jpublic class WebSocketUtil{    // ========== 会话相关 ==========        private static final Map<String, Session> SESSION_USER_MAP = new ConcurrentHashMap<> ();        public static void addSession(Session session) {        // 更新 SESSION_USER_MAP        SESSION_USER_MAP.put(session.getId (), session);    }        public static void removeSession(Session session) {        // 从 SESSION_USER_MAP 中移除          SESSION_USER_MAP.remove(session.getId ());    }    // ========== 消息相关 ==========        public static <T extends Message> void broadcast(String message) {        // 创建消息//        String messageText = buildTextMessage(type, message);        // 遍历 SESSION_USER_MAP ,进行逐个发送        for (String sessionId : SESSION_USER_MAP.keySet()) {            sendTextMessage(SESSION_USER_MAP.get (sessionId), message);        }    }        public static <T extends Message> void send(Session session, String type, T message) {        // 创建消息        String messageText = buildTextMessage(type, message);        // 遍历给单个 Session ,进行逐个发送        sendTextMessage(session, messageText);    }        private static <T extends Message> String buildTextMessage(String type, T message) {        jsONObject messageObject = new JSONObject();        messageObject.put("type", type);        messageObject.put("body", message);        return messageObject.toString();    }        private static void sendTextMessage(Session session, String messageText) {        if (session == null) {            log.error("[sendTextMessage][session 为 null]");            return;        }        RemoteEndpoint.Basic basic = session.getBasicRemote();        if (basic == null) {            log.error("[sendTextMessage][session 的  为 null]");            return;        }        try {            basic.sendText(messageText);        } catch (IOException e) {            log.error("[sendTextMessage][session({}) 发送消息{}) 发生异常",                    session, messageText, e);        }    }}

在线websocket调试输入ws://localhost:8080/即可。

关于“springboot整合websocket如何实现群聊”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: springboot整合websocket如何实现群聊

本文链接: https://lsjlt.com/news/278487.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot整合websocket如何实现群聊
    这篇文章将为大家详细讲解有关springboot整合websocket如何实现群聊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现思路发送者向服务器发送大家早上好。其它客户端可以收到对应消息。项目展示通...
    99+
    2023-06-15
  • 使用springboot整合websocket实现群聊教程
    目录先上效果图:先来准备工作导入依赖导入依赖后扫描启用接收前端传回数据其中重点就是4个注解**@OnOpen,@OnClose,@OnMessage,@OnError**前端页面代码...
    99+
    2024-04-02
  • springboot整合websocket实现群聊思路代码详解
    实现思路 发送者向服务器发送大家早上好。其它客户端可以收到对应消息。 项目展示 通过springboot引入websocket,实现群聊,通过在线websocket测试进行展示。...
    99+
    2024-04-02
  • springboot结合websocket聊天室实现私聊+群聊
    目录 先看效果 后端代码 前端代码 先看效果 一人分饰多角(bushi) 后端代码 先引入websocket依赖 <!-- websocket消息推送 -->...
    99+
    2024-04-02
  • SpringBoot整合websocket实现即时通信聊天
    目录一、技术介绍1.1 客户端WebSocket1.1.1 函数1.1.2 事件1.2 服务端WebSocket二、实战 2.1、服务端2.1.1引入maven依赖2.1....
    99+
    2024-04-02
  • SpringBoot整合WebSocket实现聊天室流程全解
    目录什么是WebSocket WebSocket通信模型为什么需要WebSocketWebsocket与http的关系SpringBoot集成WebSocket什么是Web...
    99+
    2023-01-04
    SpringBoot整合WebSocket实现聊天室 SpringBoot WebSocket聊天室
  • SpringBoot中webSocket如何实现即时聊天
    这篇文章主要介绍了SpringBoot中webSocket如何实现即时聊天,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全新...
    99+
    2023-06-14
  • SpringBoot整合Netty实现WebSocket的示例代码
    目录一、pom.xml依赖配置二、代码2.1、NettyServer 类2.2、SocketHandler 类2.3、ChannelHandlerPool 类2.4、Applicat...
    99+
    2024-04-02
  • 怎么在SpringBoot中利用WebSocket实现一个群聊功能
    本篇文章为大家展示了怎么在SpringBoot中利用WebSocket实现一个群聊功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。消息群发创建新项目:添加依赖:<dependency>...
    99+
    2023-06-06
  • SpringBoot中webSocket实现即时聊天
    即时聊天 这个使用了websocket,在springboot下使用很简单。前端是小程序,这个就比较坑,小程序即时聊天上线需要域名并且使用wss协议,就是ws+ssl更加安全。但是要...
    99+
    2024-04-02
  • SpringBoot+STOMP协议实现私聊、群聊
    目录一、为什么需要STOMP?二、STOMP详解三、SpringBoot集成STOMP代码示例3.1、功能示例3.2、架构图3.3、服务端代码3.4、h5代码一、为什么需要S...
    99+
    2024-04-02
  • SpringBoot+WebSocket怎么实现在线聊天
    本篇内容主要讲解“SpringBoot+WebSocket怎么实现在线聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot+WebSocket怎么实现在线聊天”吧!在线聊天使用...
    99+
    2023-06-19
  • Springboot+WebSocket实现在线聊天功能
    目录一、后端二、Websocket三、前端一、后端 1.在Springboot项目的pom.xml中添加依赖 <!--websocket协议--> <depende...
    99+
    2023-02-14
    Springboot WebSocket在线聊天 Springboot WebSocket聊天 Springboot WebSocket
  • 如何利用html5的websocket实现websocket聊天室
    这篇文章主要讲解了“如何利用html5的websocket实现websocket聊天室”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用html5的we...
    99+
    2024-04-02
  • SpringBoot如何实现整合微信支付
    这篇文章将为大家详细讲解有关SpringBoot如何实现整合微信支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.准备工作1.1 数据库表这里涉及微信支付一共两个表:订单表支付记录表1.2 实体类数据...
    99+
    2023-06-22
  • 如何进行SpringBoot整合JWT的实现
    这篇文章跟大家分析一下“如何进行SpringBoot整合JWT的实现”。内容详细易懂,对“如何进行SpringBoot整合JWT的实现”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习...
    99+
    2023-06-26
  • SpringBoot+STOMP协议怎么实现私聊、群聊功能
    这篇文章主要介绍了SpringBoot+STOMP协议怎么实现私聊、群聊功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、为什么需要STOMP  &n...
    99+
    2023-06-15
  • SpringBoot怎么使用WebSocket实现群发消息
    这篇文章主要介绍了SpringBoot怎么使用WebSocket实现群发消息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么使用WebSocket实现群发消息文章都会有所收获,下面我们一起...
    99+
    2023-06-08
  • 如何用JS WebSocket实现简单聊天
    目录短轮询(Polling)长轮询(Long-Polling)WebSocket通信原理实现简单单聊心跳保活总结短轮询(Polling) 短轮询的实现思路就是浏览器端每隔几秒钟向服务...
    99+
    2024-04-02
  • PHP+Socket之如何实现websocket聊天室
    这篇文章主要介绍了PHP+Socket之如何实现websocket聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP+Socket之如何实现websocket聊天室文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作