广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot+WebSocket怎么实现在线聊天
  • 798
分享到

SpringBoot+WebSocket怎么实现在线聊天

2023-06-19 12:06:24 798人浏览 独家记忆
摘要

本篇内容主要讲解“SpringBoot+websocket怎么实现在线聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBoot+WEBSocket怎么实现在线聊天”吧!在线聊天使用

本篇内容主要讲解“SpringBoot+websocket怎么实现在线聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习springBoot+WEBSocket怎么实现在线聊天”吧!

在线聊天使用了SpringBoot+WebSocket实现,为了保证用户隐私,所有的聊天数据都保存在系统本地,服务器只进行了数据转发。OK,那接下来,我们来看下大致的实现步骤。

服务端

服务端首先加入websocket依赖,如下:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-websocket</artifactId></dependency>

创建WebSocket的配置类,如下:

@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {    @Override    public void reGISterStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {        stompEndpointRegistry.addEndpoint("/ws/endpointChat").withSockjs();    }    @Override    public void configureMessageBroker(MessageBrokerRegistry registry) {        registry.enableSimpleBroker("/queue","/topic");    }}

这里我并未使用原生的websocket协议,而是使用了websocket的子协议stomp,方便一些。消息代理既使用了/queue,又使用了/topic,主要是因为我这里既有点对点的单聊(queue),也有发送系统消息的群聊(topic)。

创建websocket处理类Controller,如下:

@Controllerpublic class WsController {    @Autowired    SimpMessagingTemplate messagingTemplate;    @MessageMapping("/ws/chat")    public void handleChat(Principal principal, String msg) {        String destUser = msg.substring(msg.lastIndexOf(";") + 1, msg.length());        String message = msg.substring(0, msg.lastIndexOf(";"));        messagingTemplate.convertAndSendToUser(destUser, "/queue/chat", new ChatResp(message, principal.getName()));    }}

消息协议很简单:发送来的消息,最后一个;后面跟的是该条消息要发送到哪个用户,这里通过字符串截取将之提取出来。响应消息包含两个字段,一个是消息内容,一个是该条消息由谁发送。

OK,如此之后,我们的服务端就写好了,很简单。

前端

前端代码稍微复杂,我这里主要和小伙伴介绍下我的大致思路和核心代码,具体代码小伙伴可以star源码进行研究。

首先,当用户登录成功之后,我就发起websocket的连接,将ws连接起来,ws的代码我主要写在了store中,如下:

connect(context){    context.state.stomp = Stomp.over(new SockJS("/ws/endpointChat"));    context.state.stomp.connect({}, frame=> {    context.state.stomp.subscribe("/user/queue/chat", message=> {        var msg = JSON.parse(message.body);        var oldMsg = window.localStorage.getItem(context.state.user.username + "#" + msg.from);        if (oldMsg == null) {        oldMsg = [];        oldMsg.push(msg);        window.localStorage.setItem(context.state.user.username + "#" + msg.from, JSON.stringify(oldMsg))        } else {        var oldMsgJson = JSON.parse(oldMsg);        oldMsgJson.push(msg);        window.localStorage.setItem(context.state.user.username + "#" + msg.from, JSON.stringify(oldMsgJson))        }        if (msg.from != context.state.currentFriend.username) {        context.commit("addValue2DotMap", "isDot#" + context.state.user.username + "#" + msg.from);        }        //更新msgList        var oldMsg2 = window.localStorage.getItem(context.state.user.username + "#" + context.state.currentFriend.username);        if (oldMsg2 == null) {        context.commit('updateMsgList', []);        } else {        context.commit('updateMsgList', JSON.parse(oldMsg2));        }    });    }, failedMsg=> {    });}

连接成功之后,就可以准备接收服务端的消息了,接收到服务端的消息后,数据保存在localStorage中,保存格式是 当前用户名#消息发送方用户名:[{from:'消息发送方',msg:'消息内容'}],注意后面的是一个json数组,整个存储的key之所以用当前用户名#消息发送方用户名是为了避免同一个浏览器多个用户登录所产生的数据紊乱,OK,这样两个人的聊天记录都将保存在这个数组中。在聊天展示页面,当数组中的数据发生变化时,自动更新。

在聊天页面,通过stomp发送消息,如下:

this.$store.state.stomp.send("/ws/chat", {}, this.msg + ";" + this.currentFriend.username);

注意每条消息的内容除了内容本身外,还要加上当前发送者的名字。
每次发送成功后更新聊天页面即可。更新聊天页面代码如下:

<template v-for="msg in msgList"><!--发送来的消息--><div        v-if="msg.from==currentFriend.username">    <img :src="currentFriend.userface" class="userfaceImg">    <div    >    {{msg.msg}}    </div></div><!--发出去的消息--><div v-if="msg.from!=currentFriend.username"        >    <div    >    {{msg.msg}}    </div>    <img :src="currentUser.userface" class="userfaceImg"></div></template>

如果消息中的from字段的值,就是当前聊天的用户名,则是发送来的消息,否则就是发出去的消息,不同的消息设置不同的样式即可。

到此,相信大家对“SpringBoot+WebSocket怎么实现在线聊天”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: SpringBoot+WebSocket怎么实现在线聊天

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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
  • SpringBoot+WebSocket实现多人在线聊天案例实例
    目录1.pom.xml2.消息实体类3.controller4.WebSocket的配置文件5.前端发送消息页面6.测试6.1.客户端A6.2.客户端B1.pom.xml <x...
    99+
    2022-11-13
  • SpringBoot中webSocket实现即时聊天
    即时聊天 这个使用了websocket,在springboot下使用很简单。前端是小程序,这个就比较坑,小程序即时聊天上线需要域名并且使用wss协议,就是ws+ssl更加安全。但是要...
    99+
    2022-11-12
  • springboot结合websocket聊天室实现私聊+群聊
    目录 先看效果 后端代码 前端代码 先看效果 一人分饰多角(bushi) 后端代码 先引入websocket依赖 <!-- websocket消息推送 -->...
    99+
    2022-11-13
  • SpringBoot中webSocket如何实现即时聊天
    这篇文章主要介绍了SpringBoot中webSocket如何实现即时聊天,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全新...
    99+
    2023-06-14
  • Django实现WebSocket在线聊天室功能(channels库)
    1.Django实现WebSocket在线聊天室 1.1 安装 pip install channels==2.3 (saas) F:\Desktop\Python_Study\...
    99+
    2022-11-12
  • Python怎么实现在线聊天室私聊
    本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更...
    99+
    2023-06-02
  • SpringBoot整合websocket实现即时通信聊天
    目录一、技术介绍1.1 客户端WebSocket1.1.1 函数1.1.2 事件1.2 服务端WebSocket二、实战 2.1、服务端2.1.1引入maven依赖2.1....
    99+
    2022-11-13
  • 怎么在Django中使用channels和websocket实现一个在线聊天室
    本篇文章为大家展示了怎么在Django中使用channels和websocket实现一个在线聊天室,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Channels是Django团队研发的一个给Djan...
    99+
    2023-06-15
  • 怎么利用html5的websocket实现websocket聊天室
    小编给大家分享一下怎么利用html5的websocket实现websocket聊天室,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!     什么是websocket ...
    99+
    2022-10-19
  • 在SpringBoot中利用Websocket实现一个网页聊天功能
    这篇文章将为大家详细讲解有关在SpringBoot中利用Websocket实现一个网页聊天功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。导入websocket的包。通过使用SpringB...
    99+
    2023-05-31
    springboot websocket bs
  • SpringBoot整合WebSocket实现聊天室流程全解
    目录什么是WebSocket WebSocket通信模型为什么需要WebSocketWebsocket与http的关系SpringBoot集成WebSocket什么是Web...
    99+
    2023-01-04
    SpringBoot整合WebSocket实现聊天室 SpringBoot WebSocket聊天室
  • PHP中怎么利用WebSocket实现一个在线聊天通讯系统
    今天就跟大家聊聊有关PHP中怎么利用WebSocket实现一个在线聊天通讯系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。新建WebSocket....
    99+
    2022-10-18
  • WebSocket技术在在线聊天室中的实际应用
    随着互联网的迅猛发展,人们对于即时通讯的需求越来越高。传统的HTTP协议虽然能传输数据,但是每次都需要发起请求,效率较低。为了解决这个问题,WebSocket技术就应运而生。WebSocket技术能够在浏览器与服务器之间建立一个持久的、双向...
    99+
    2023-10-21
    在线聊天室 实际应用 实际应用关键词:WebSocket
  • 怎么在HTML5中使用WebSocket实现一个聊天室
    本篇文章给大家分享的是有关怎么在HTML5中使用WebSocket实现一个聊天室,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1)注册注册要处理几个事情,分别是注册完成后获取当...
    99+
    2023-06-09
  • 怎么在HTML5中利用WebSocket实现点对点聊天
    这期内容当中小编将会给大家带来有关怎么在HTML5中利用WebSocket实现点对点聊天,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先在系统启动的时候调用InitServlet方法public&nbs...
    99+
    2023-06-09
  • 基于websocket的聊天功能怎么实现
    本篇内容主要讲解“基于websocket的聊天功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于websocket的聊天功能怎么实现”吧!   一...
    99+
    2022-10-19
  • 怎么用javaweb实现在线聊天工具
    本篇内容主要讲解“怎么用javaweb实现在线聊天工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用javaweb实现在线聊天工具”吧!写这个玩意儿就是想练练手, 用户需要登陆才能在线聊天...
    99+
    2023-06-17
  • Java实现在线聊天功能
    本文实例为大家分享了Java实现在线聊天功能的具体代码,供大家参考,具体内容如下 效果 关键代码 创建Client.java import java.io.IOException;...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作