美文网首页
三种实现实时通讯的方案

三种实现实时通讯的方案

作者: 倚仗听江 | 来源:发表于2021-01-05 16:42 被阅读0次

1. Ajax轮询

使用ajax异步的每隔一段时间向后端发送一次请求,询问服务器有没有新的消息或者新的状态更新,如果有则返回给前端。因为这种方式其实是一种死循环,所以需要服务器有很快的处理速度和资源
大概就是下面这样的情况
客户端:有新消息吗?(Request)
服务端:没有(Response)
客户端:有新消息吗?(Request)
服务端:没有(Response)
客户端:有新消息吗?(Request)
服务端:没有!你好烦!(Response)
客户端:有新消息吗?(Request)
服务端:你有病吧(Response)
客户端:有新消息吗?(Request)
服务端:有了,拿走。。。(Response)
客户端:有新消息吗?(Request)
服务端:没有。。。(Response)

2. Long pull

原理和Ajax轮询差不多,只不过他使用的是一种阻塞的模式。当客户端发起请求后,如果服务端没有响应,那么就会一直阻塞着。只有在服务端返回后,才会再次建立请求,周而复始。因为使用的是阻塞的模式,所以需要有很高的并发
大概就是下面这样的情况
客户端:有新消息吗?没有你也不准挂,等到有新消息了立马告诉我(Request)
服务端:好吧,那就一直连接着。。。终于有新消息了,来,给你(Response)
客户端:有新消息吗?没有你也不准挂,等到有新消息了立马告诉我(Request)
服务端:好吧,那就一直连接着。。。终于有新消息了,来,给你(Response)
......
以上的两种方式都是在不停的建立HTTP连接,等待服务器处理。这是一种被动的响应,是比较消耗资源的。(这其实就是HTTP的一个特点:被动性,服务端不能主动联系客户端,只能有客户端发起。)

3. WebSocket

WebSocket其实就是基于HTTP的一种协议,或者说就是使用HTTP协议来实现一部分的握手。客户端发起请求到服务端,找到服务端的服务助理,服务助理会和客户端保持连接,并且可以主动的推送消息给客户端。Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中。

WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话(不同于HTTP的被动性)。

大概是以下这样的场景:
客户端:我要建立Websocket协议。
服务端:好的,建立Websocket协议。
客户端:麻烦有新消息的时候告诉我哦_
服务端:好的。
服务端:有新消息了,来,给你。

WebSocket协议具有以下特点:

  • 建立在 TCP 协议之上,服务器端的实现比较容易。
  • 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 可以发送文本,也可以发送二进制数据。
  • 没有同源限制,客户端可以与任意服务器通信。
  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

相关文章

  • 三种实现实时通讯的方案

    1. Ajax轮询 使用ajax异步的每隔一段时间向后端发送一次请求,询问服务器有没有新的消息或者新的状态更新,如...

  • iOS:组件化的三种通讯方案

    组件化 本文主要介绍组件化常用三种通讯方式. 常⽤的三种组件化通讯方案 组件化通信方案组件化最重要的是兄弟模块的通...

  • day36 文件实时同步

    备份服务方案( 利用实时复制方式,实现实时备份数据等重要信息) 2.1、实时复制细节实现说明 2.2、实时复制软件...

  • WebSocket--实时通讯(1)

    前言 在WebSocket之前,开发者完成实时通讯大抵都是求助一些‘hacks’来实现实时通讯。最流行的一种方式是...

  • Flask中使用SocketIO

    SocketIO是大名鼎鼎的实时通讯库,可以在服务器和页面之间轻松的实现双向实时通讯, 兼容性好,使用方便.多用来...

  • WebSocket实现实时通讯

    WebSocket是HTML5以后基于TCP协议应用层的一种全双工实时通讯协议。注:全双工:个人了解服务器和客户端...

  • Android嵌套滑动机制

    概览 实现嵌套滑动有三种方案: 纯事件拦截与派发方案 基于NestingScroll机制的实现方案 基于Coord...

  • SocketDemo,实时通讯

    实时通讯简化相互通讯,俗称QQ,先输入IP地址进行相互连接,在进行内容相互传递。 步骤 Socket实现通讯的步骤...

  • Spring+WebSocket+SockJS实现实时聊天

    设计初衷是通过websocket实现网页实时通讯聊天。 工程环境:apache-tomcat-7.0.68+jdk...

  • Android嵌套滑动机制(NestingScroll,Coor

    实现嵌套滑动有三种方案: 1. 纯事件拦截与派发方案 2. 基于NestingScroll机制的实现方案 3. 基...

网友评论

      本文标题:三种实现实时通讯的方案

      本文链接:https://www.haomeiwen.com/subject/hpfwoktx.html