HTTP协议
HTTP是单向的,客户端发送请求,服务器发送响应。当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,服务器在接收到请求后会将响应发送给客户端。
每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTP或HTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。 HTTP是在TCP之上运行的无状态协议。
HTTP可以运行在任何可靠的面向连接的协议(例如TCP,SCTP)的上层。当客户端将HTTP请求发送到服务器时,客户端和服务器之间将打开TCP连接,并且在收到响应后,TCP连接将终止,每个HTTP请求都会建立单独的TCP连接到服务器,如果客户端向服务器发送10个请求,则会打开10个单独的HTTP连接。并在获得响应后关闭。
WebSocket协议
WebSocket是双向的,在客户端与服务器通信的场景中使用的全双工协议,与HTTP不同,它以ws://或wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被客户端或服务器终止。在客户端和服务器中的任何一方关闭连接之后,连接将从两端终止。
以客户端与服务器通信为例,每当启动客户端和服务器之间的连接时,客户端与服务器进行握手随后创建一个新的连接,该连接将保持活动状态,直到被他们中的任何一方终止。建立连接并保持活动状态后,客户端和服务器将使用相同的连接通道进行通信,直到连接终止。
新建的连接被称为WebSocket。一旦通信链接建立和连接打开后,消息交换将以双向模式进行,客户端与服务器之间的连接会持续存在。如果其中任何一方(客户端服务器)宕掉或主动关闭连接,则双方均将关闭连接。WebSocket的工作方式与HTTP的工作方式略有不同,状态代码101表示WebSocket中的交换协议。
应用场景
WebSocket
- 即时Web应用程序
- 游戏应用程序
- 聊天应用程序
HTTP
- 要获取旧数据,或者只想获取一次数据供应用程序使用