小熊计网系列-Websocket与HTTP联系

188 阅读1分钟

Websocket

背景

为什么在有HTTP的情况下还需要Websocket?
在很多游戏的场景下,服务器会主动发消息给客户端,我们可以使用HTTP进行轮询,但是这是一种伪服务器的模式,并不是服务器主动发消息给客户端,而是客户端自己偷偷请求服务器,比如:扫码登录

但是这种情况下,会发送很多HTTP请求,并且用户可能会感到明显的卡顿,如何解决这个问题?

首先,可以把HTTP请求的超时设置的很大,即长轮询机制,但是这种还是服务端去主动获取数据,如果是游戏场景该怎么办? Websocket应运而生

Websocket介绍

HTTP1.1是半双工协议,虽然TCP是全双工,但是为了保证HTTP协议可以从客户端发送请求再由服务器响应,所以HTTP设置为半双工

什么是半双工?就是客户端和服务器只能有一方在发送数据,不能同时发送数据

为了保证全双工的需求,Websocket被设计出来了,注意,Websocket也是在应用层的协议

Websocket连接建立

在HTTP请求里带上一些特殊的Header头进行升级,只有在建立连接的时候用到了HTTP。自带解决粘包的问题,适用于需要服务器和客户端交互比较频繁的情况,比如聊天机器人,游戏等。