首页 > 编程知识 正文

IM即时通信的一些基本概念梳理

时间:2023-05-03 16:16:28 阅读:233669 作者:4811

一、WebSocket和HTTP的区别

相同点:
WebSocket 和 HTTP 都是基于TCP的应用层协议,都是可靠性传输协议。

不同点:

1、HTTP请求是单向的,需要等到客户端发起请求,服务端才能响应;

      WebSocket是全双工协议,客户端通过HTTP/1.1协议进行握手,连接就建立了,通信双方都可以在任何时刻向另一方向发送数据,指导关闭请求

2、HTTP请求需要再每次请求都携带很多状态信息

     WebSocket需要先创建连接,所以使得其是一种有状态的协议,之后通信时可以省略部分状态信息

3、WebSocket定义了二进制帧,相对HTTP可以更轻松地处理二进制内容

 

二、客户端和服务端通讯的成长阶段

1、轮询(Polling)阶段

客户端发送请求Request,服务器不管有没有新消息,立即返回Response,然后关闭链接,over

2、长轮询 (Long polling) 阶段

客户端发送请求Request,服务器没有消息就一直不返回Response,等到有新消息或者超时后再返回给客户端,然后请求结束

3、WebSocket阶段

(1)客户端通过HTTP/1.1协议的101状态码发送请求,客户端进行回应,即第一次握手完成

(2)双方建立了信任关系,客户端和服务端可以互相发送消息

(3)客户端发送结束通讯的请求,服务端回应,over

一个典型的Websocket握手请求如下:

客户端请求GET / HTTP/1.1Upgrade: websocketConnection: UpgradeHost: example.comOrigin: http://example.comSec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==Sec-WebSocket-Version: 13服务器回应HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=Sec-WebSocket-Location: ws://example.com/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。