Spring Boot 结合 WebSocket 实现在线聊天,前端组件化开发

今天我们就来看看如何在 Spring Boot 中结合 WebSocket 实现点对点在线聊天。

1.WebSocket 简介


1.1 HTTP/1.1 的升级特性

要说 WebSocket 协议,我们得先来说说 HTTP 协议的一个请求头,事实上,所有的 HTTP 客户端(浏览器、移动端等)都可以在请求头中包含 Connection:Upgrade ,这个表示客户端希望升级请求协议,那么希望升级成什么样的协议呢?我们需要在 Upgrade 头中指定一个或者多个协议的列表,当然这些协议必须兼容 HTTP/1.1 协议。服务器收到请求之后,如果接受升级请求,那么将会返回一个 101 的状态码,表示转换请求协议,同时在响应的 Upgrade 头中使用单个值,这个单个值就是请求协议列表中服务器支持的第一个协议(即请求头的 Upgrade 字段中列出来的协议列表中服务器支持的第一个协议)。

HTTP 升级最大的好处是最终使我们可以使用任意的协议,在升级握手完成之后,它就不再使用 HTTP 连接了,我们甚至可以在升级握手完成之后建立一个 Socket 连接,理论上我们可以使用 HTTP 升级在两个端点之间使用任何自己设计的协议,进而创建出各种各样的 TCP 通信,当然浏览器不会让开发者随意去这么做,而是要指定某些协议,WebSocket 应运而生!

大家来看松哥之前制作的一张图,这里详细解释了 websocket 协议升级的过程:

640?wx_fmt=png

1.2 WebSocket 协议

OK,了解了 HTTP/1.1 协议的升级特性之后,我们再来详细看看整个过程是怎么样的?

一个 WebSocket 请求首先使用非正常的 HTTP 请求以特定的模式访问一个 URL ,这个 URL 有两种模式,分别是 ws 和 wss,对应 HTTP 协议中的 http 和 https,请求头中除了 Connection:Upgrade 之外还有一个 Upgrade:websocket ,它们两个将共同告诉服务器将连接升级为 WebSocket 这样一种全双工协议。

如此,在握手完成之后,文本消息或者其他二进制消息就可以同时在两个方向上进行发送,而不需要关闭和重建连接。此时的客户端和服务端关系其实是对等的,他们都可以互相向对方主动发消息。

注意

ws 和 wss 模式并不能算作 HTTP 协议的一部分,因为 HTTP 请求和请求头并不包含 URL 模式,HTTP 请求只在请求的第一行中包含相对于服务器的 URL ,在 Host 头中包含域名,而 WebSocket 中特有的 ws 和 wss 模式主要用于通知浏览器和 API 是希望使用 SSL/TLS(wss),还是希望使用不加密的方式(ws)进行连接。

1.3 WebSocket 的优势

说了这么多,那么接下来我们来看看 WebSocket 协议都有哪些优势:

  1. 由于 WebSocket 连接在端口80(ws)或者443(wss)上创建,与 HTTP 使用的端口相同,这样,基本上所有的防火墙都不会阻塞 WebSocket 连接

  2. WebSocket 使用 HTTP 协议进行握手,因此它可以自然而然的集成到网络浏览器和 HTTP 服务器中

  3. 使用该协议,当消息启动或者到达的时候,服务端和客户端都可以知道

等等,还有很多。

1.4 WebSocket 的用途

凡是涉及到即时通讯的,基本上都能用上它:

  1. 网页上的在线聊天

  2. 多人在线游戏

  3. 在线股票网站

  4. 在线即时新闻网站

  5. 高清视频流

  6. 应用集群之间的通信

  7. 远程系统/软件的状态和性能的实时监控

2. 实战


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

资料领取方式:点击这里免费领取前端全套学习资料

css源码pdf

JavaScript知识点
资料领取方式:点击这里免费领取前端全套学习资料](https://bbs.csdn.net/topics/618191877)

[外链图片转存中…(img-b7wmQu55-1712205809789)]

[外链图片转存中…(img-bx3sGkaM-1712205809789)]

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现基于Spring Boot、Vue和WebSocket聊天室并持久消息,您需要完成以下步骤: 1. 创建Spring Boot项目 使用Spring Initializr创建一个基于Maven或Gradle的Spring Boot项目。 2. 配置WebSocketSpring Boot项目中,您需要配置WebSocket。可以使用Spring的`@EnableWebSocket`注解来开启WebSocket。 3. 编写WebSocket处理程序 创建一个WebSocket处理程序来处理WebSocket连接和消息。这个处理程序应该继承`TextWebSocketHandler`类,并实现`handleTextMessage()`方法来处理WebSocket消息。在处理程序中,您可以将接收到的消息存储到数据库中,以便在断开连接后仍然可以访问它们。 4. 创建Vue项目 使用Vue CLI创建一个新的Vue项目。 5. 集成Vue和WebSocket 在Vue项目中,使用`vue-socket.io`库来集成WebSocket。这个库提供了一个`socket`对象,您可以使用它来发送和接收WebSocket消息。在Vue组件中,您可以使用`socket`对象来连接WebSocket服务器,并处理接收到的消息。 6. 编写聊天室界面 在Vue项目中,创建一个聊天室界面。这个界面应该包括一个输入框和一个消息列表。当用户在输入框中输入消息时,使用`socket`对象将该消息发送到WebSocket服务器。当接收到新消息时,将它们添加到消息列表中。 7. 持久消息 在Spring Boot项目中,您可以使用JPA和Hibernate等ORM框架来将消息存储到数据库中。当处理程序接收到新消息时,将它们保存到数据库中。当用户重新连接到聊天室时,您可以从数据库中检索以前的消息并将它们添加到消息列表中。 完成以上步骤后,您应该能够创建一个基于Spring Boot、Vue和WebSocket聊天室,并持久消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值