分享好友 最新动态首页 最新动态分类 切换频道
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

 
 

最新文章
2023手机版传奇游戏排行榜大全 高热度的传奇手游推荐
传奇游戏一直是大部分玩家最喜欢的游戏类型,近几年有很多高品质的传奇手游。那么2023手机版传奇游戏排行榜大全有哪些呢?今天小编就给大家挑选了几个传奇手游,接下来一起来看一看高热度的传奇手游有哪些吧。 1、《裁决王座》这各游戏最大
9月换手机,公认“口碑最好”的3款手机,流畅耐用5年不过时
​​现在马上快要9月了,俗话说“金九银十”是收获的季节。现在各大品牌都会每个月发布新产品,虽然不买手机也不少人会关注最新动态。新款手机确实都是在迭代升级的,但是一般刚出来的手机价格上都会比上一代手机高,而且也不是我们所有人
6款AI生成PPT的网站,PPTAI一键生成
PPT是当今办公和学习中的重要组成部分,无论是工作汇报、发表研究成果,还是课件培训,一款精心制作的PPT能够有效吸引观众的参与,并将你的信息深刻传达给他们。借助不断进步的人工智能技术,众多免费的AI PPT生成器应运而生,深度学习帮助
AI画图在线生成网址:一键创造独特艺术作品,让想象力无限飞扬!
想象一下,你身处在一个神奇的数字世界,这里有无数的艺术作品等待着你的创造。你可以选择任何你想要的颜色、形状、线条和纹理,甚至可以自定义你的艺术作品,让它完全符合你的想象力和创造力。这听起来像是一个梦吗?不,这不再是一个梦,
alesdun油烟机快速售后24小时人工400-(问题解决) - 焦点 - 百科知识-蓝心网
alesdun油烟机售后24小时维修服务热线:400-658-8618。alesdun油烟机全市各区售后服务点热线号码。☎:400-658-8618alesdun油烟机售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供
72小时内实现日均2000+收益的今日头条引流技巧,助你打造爆款内容吸引海量用户!
72小时内实现日均2000+收益的今日头条引流技巧在如今信息盛行的时代,如何在内容创作中脱颖而出并获得可观收益,成为了众多创作者梦想实现的目标。今日头条,作为一个具有广泛用户基础和先进内容推荐机制的社交新闻平台,为创作者提供了丰
AI绘画系统搭建,— AI平台搭建解决方案(软件、源码、H5)
在当今竞争激烈的商业世界,老板们和创业者们都在苦苦寻觅下一个突破点。您是否发现,传统业务拓展越发艰难,市场逐渐饱和,利润空间不断被压缩?您是否渴望找到一种创新的方式,能在低成本投入下,迅速吸引大量客户,提升品牌度与竞争力?
334期[干脆面]P5万位胆码参考02357
334期干脆面体彩P5万位胆码参考:02357 开:333期干脆面体彩P5万位胆码参考:13489 开:84859[万位:8]332期干脆面体彩P5万位胆码参考:35679 开:67957[万位:6]331期干脆面体彩P5万位胆码参考:15789 开:71227[万位:7]330期干脆面体彩P5万位胆码参
AI绘画Stable Diffusion,手把手教你使用Stable Diffusion制作角色三视图!
前言使用Stable Diffusion制作角色三视图,可以借助ControlNet功能来实现人物姿势控制,并结合LoRA模型进行精细调整。以下是一般步骤: 安装Stable Diffusion WebUI: 建议使用最新版本,并确保已安装并正确配置Con
70周年国庆干货:那些百度小程序开发踩过的坑
70周年国庆长假即将来临,对于这么长的假期,如果不知道想干点啥,不如看看这篇文章,这是我们金柚互联技术同事在开发百度小程序过程中遇到的一些问题,整理纪录在此,希望能够帮助到大家成功开发上线自己公司的百度小程序!开发百度小程序
相关文章
推荐文章
发表评论
0评