分享好友 最新动态首页 最新动态分类 切换频道
WebSocket实现在线聊天室
2024-12-26 14:12

项目实现源码

WebSocket实现在线聊天室

前端源码

后端源码

1.1.1 轮询的概念

客户端以固定的事件间隔(例如每秒或几分钟)向服务器发送HTTP请求,服务器收到请求后,处理请求并返回数据给客户端

轮询具体实现https://blog.csdn.net/m0_48333563/article/details/125968144

1.1.2 轮询的优点

  • 实现简单:轮询是一种相对简单的获取都武器更新的方法,易于理解和实现
  • 兼容性:由于轮询基于HYTTP请求和响应,因此他兼容几乎所有的网络服务和客户端

1.1.3 轮询的缺点

  • 数据更新不及时:客户端必须等待下一次轮询间隔才能接收到新数据,这可能导致数据更新不及时
  • 资源浪费:频繁的轮询可能会浪费服务器和客户端的资源,油漆是在没有新数据的情况下,大部分请求都是无效的。

1.2.1长轮询的概念

长轮询是一种改进的轮询技术,客户端向服务器发送HTTP请求。服务器接收到请求后,会阻塞请求,直到有新数据达到指定的超时时间才会返回结果

  • 如果有新数据,服务器会立即返回结果并关闭连接
  • 如果没有新数据,服务器会在超时后关闭连接
  • 客户端收到响应或连接超时后,会再发送新的请求

1.2.2 长轮询的优点

  • 实时性提升:长轮询可以更快的接受到服务器的更新,因为他减少了客户端在两次请求之间的等待时长
  • 减少了无效请求:与定时轮询相比,长轮询减少了在没有数据更新时无效请求的次数,因为服务器仅在数据准备好时才发送响应。

1.2.3 长轮询的缺点

  • 资源占用:虽然轮询减少了请求次数,但他可能会长时间占用服务器资源,因为服务器需要保持连接打开直到新数据出现或超时。
  • 兼容性和复杂度:长轮询的实现比简单的轮询复杂,需要服务器编写额外的逻辑
 
 
 
 

SSE:服务器发送事件,主要用于服务器向客户端推送实时更新(不需要客户端主动请求

  • SSE会在客户端和服务器之间打开一个单项通道
  • 服务器返回的不再是一次性的数据包,而是text/event-stream类型的数据流信息
  • 服务器有数据发生改变时会将数据以流的形式传输给客户端

SSE仅支持从服务器到客户端单项通信,客户端无法通过SSE发送到服务器

全双工:允许数据在两个方向上同时传输

半双工:允许数据在两个方向上传输,但是同一时间段只允许一个方向传输

WebSocket 是一种基于 TCP 的网络通信协议,允许在客户端和服务器建立全双工的通信通道。这意味着客户端和服务器可以在任何时候互相发送消息,不需要像传统的 HTTP 请求那样等待响应。WebSocket 非常适合于需要实时更新数据的应用场景,如在线游戏、实时聊天、实时数据推送等

WebSocket 协议会在客户端和服务器之间建立一条持久的连接通道,连接建立后,双方可以在任意时间通过这个通道发送数据,每次请求无需重新建立连接

WebSocket 的数据传输是双向的,这意味着服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求

WebScoket连接建立的步骤

1.客户端发起握手请求:客户端通过HTTP请求发起WebScoket握手请求

2.服务器响应握手请求:服务器收到握手请求后,如果同意升级协议,就会返回一个HTTP 101状态码,表示协议切换成功

3.连接建立:握手成功,客户端和服务器之间的连接切换成WebSockt协议,之后双方通过此连接进行双向通信。

 
 
 
 
 
 

3.4.1 前端

 
 

Tomcat的7.0.5版本开始支持WebSocket,并实现了Java WebSocket规范。

Java WebSocket应用由一系列的Endpoint组成。Endpoint是一个java对象,代表WebSocket链接的一端,对于服务器,我们可以视为处理具体的WebSocket消息的接口。

我们可以通过两种方式定义Endpoint

第一种是编程式,继承javax.websocket.Endpoint并实现其方法

第二种是注解式,定义一个POJO,并添加@ServerEndpoint

Endpoint实例在WebSocket握手时创建,并在客户端与服务器连接过程中有效,在最后关闭连接时结束。在Endpoint接口中明确定义与其生命周期县官的方法,规范实现者确保生命周期的各个阶段调用实例相关的方法。生命周期如下

 
 
 

登陆页面:

聊天页面:

客户端->服务器

 

服务器->客户端

①系统消息格式

 

②推送给某一个用户的消息格式

 
 
 
  • SpringBoot: 2.6.7
  • JDK: 1.8

WebSocket:

 

Web:

 

fastjson2:

 
 
 
 
 
 
 
 

前端使用的技术:Vue3+Axois+Elementplus

 
 

vite.config.js

 
 

最新文章
360AI搜索 v4.0.2
360AI搜索是360公司推出的一款基于人工智能技术的搜索引擎,旨在为用户提供更加智能、高效、个性化的搜索体验。它深度融合了自然语言处理、深度学习等前沿技术,能够精准理解用户意图,提供多模态、多任务的搜索结果。无论是文字、图片还是
2024新澳免费资料大乐季|词语释义解释落实 _0.706293093
揭秘汽车圈新动态:2024新澳免费资料大乐季——词语释义与实际应用探索随着汽车行业的飞速发展,各种新兴资讯和术语不断涌现,本文将重点围绕“2024新澳免费资料大乐季”这一关键词,为您详细解读相关词语的释义,并探讨其在汽车行业中的实
Facebook海外户、Facebook开户 怎么做?
Facebook海外户、Facebook开户 怎么做?Facebook是全球Zui大的社交媒体平台之一,拥有着庞大的用户流量,因此Facebook成为了众多出海公司选择进行推广营销的平台,那么想要开展商业活动我们就需要有广告账户,下面小编讲讲Facebook开户吧!
2025-2031年全球虚拟数字人产业投资分析及运营风险评估
2025-2031年全球虚拟数字人产业投资分析及运营风险评估,是智信中科(北京)信息科技有限公司推出的优质行业报告。报告价格:纸质版6400元/份,电子版6500元/份,合订本7500元/份。一份报告的平均价格在6400元-7000元/份之间,需要注意的是
2024年手机助手软件推荐:排行榜前十名
下面给大家推荐几款好用的免费的手机助手软件,有需要的小伙伴们来了解一下。QQ同步助手电脑版是一款安全、免费的个人手机数据备份管理服务软件。通过无线网络操作备份手机中的资料,包括通讯录、软件、文档等,并在电脑上进行搜索、管理和
flask框架车辆信息管理系统毕设源码+论文
本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。 关于车辆信息管理系统的研究,现有研究主要以通用的信息管理系统为主,专门针对
ai绘画在线生成器
随着人工智能技术的不断发展,AI绘画在线生成器成为了艺术创作领域的一大亮点。本文将介绍AI绘画在线生成器的原理、应用以及对艺术创作的影响。ai绘画在线生成器一般通过对输入的图像以及用户输入的描述性文案进行分析和学习,然后生成符要
HUAWEI 华为 P9 是否值得入手?————华为P9 客观测评
本文目录一、开箱展示部分二、使用和对比篇三、测评篇四、总结近期家里手机更新换代热闹的紧,我从iphone6换成mate8,老婆从iphone6换成三星A9100,都写过测评,新机都还没捂热,家里又新添一台华为旗舰机型——华为P9。在下半年的mate9没
4300余淘宝掌柜身陷排名骗局 涉案总金额超过400万
  4300余淘宝“掌柜”  身陷“排名”骗局  上海警方破获“11.28”特大电信诈骗案  只要在一款软件里输入“宝贝”链接和名称,就能将其“顶”上淘宝网首页,成为万众瞩目的热卖商品。这样的“黑科技”,你信吗?  信的人居然不少
2024年淘宝都是什么时候做活动?活动怎么做?(淘宝年后还有什么活动)
淘宝作为中国最大的网络购物平台之一,通过不断推出各种促销活动来吸引用户,提高销售额。许多消费者都想知道,在2024年,淘宝通常会在哪些时间节点上举办活动呢?一、2024年淘宝都是什么时候做活动?节假日活动:淘宝通常会在传统的节假日
相关文章
推荐文章
发表评论
0评