采用websocket如何实现多人聊天

本文介绍了网页即时通讯的原理,包括HTTP协议的无状态性和单向性,以及基于HTTP的解决方案如Ajax短轮询和长轮询的缺点。接着详细探讨了WebSocket作为服务器推送的强武器,其特点和适用场景。通过WebSocket与STOMP协议的结合,展示了如何在SpringBoot中实现微信风格的群聊功能,包括sockjs和stompjs的使用,以及连接、订阅和消息发送的过程。
摘要由CSDN通过智能技术生成

1.网页版即时通讯背后的原理
http协议和服务器推送技术:
http协议为无状态,单向性的协议。

  • 单向性:必须由客户端发起的一个请求建立的连接,服务器接收请求,把数据返回给客户端,典型的一请求一响应。
  • 无状态:服务器与客户端通过http协议建立连接,当我们浏览器向服务器发送请求然后服务给我们应答,当我们再一次向服务器发送请求时,对于服务器来讲,在它看来这个请求是一个全新的用户。(在http协议中为了解决这种无状态的问题提出了cookie和session)

那么基于http协议的特性想简单实现一个在网页上显示服务器上的时间都是个难题。

基于http的解决方案:

  • ajax短轮询:通过前端不停的定时的向服务器发送请求,服务器收到请求后马上返回相关应答。
    缺点:带宽上的浪费。
    结果的一个延迟。当我们的客户端向服务器发送请求的时候。服务器没有最新的一个结果,但是服务器得马上给一个应答,那么这次客户端的请求相当于无效请求,那么就得等到客户端进行下一次请求才能拿到数据。

  • ajax长轮询:当客户端向服务器发送请求时,并不会每一次都马上发生应答,只有当服务器发生数据更新才发生应答,否则会停留一段时间。
    缺点:客户端没有数据到达时,http连接会停留一段时间,这会造成服务器资源浪费。

  • 基于长连接的服务器推模型sse:当客户端向服务端发送请求时,当有数据更新时发生应答但是不断开连接,有新数据更新时继续向客户端发送数据。

2.服务器推送之最强武器——WebSocket通信

  1. 什么是websocket
  • 也是h5中的协议,实现客户端与服务端双向,基于消息的文本或二进制数据通信。(天生支持发送图片视频)
  • 适合于对数据的实时性要求很强的场景,如通信、直播、共享桌面、特别适合于客户于服务频繁交互的情况下、如实时共享、多人协作等平台。
  • 采用新协议,后端需要单独实现。
  • 客户端并不是所有浏览器都支持。
  1. websocket通信原理
  • websocket借用了http的协议来完成一部分握手
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值