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

一、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

IM即时通信的一些基本概念梳理_第1张图片

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

客户端请求
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13


服务器回应
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Location: ws://example.com/

你可能感兴趣的:(服务器)