websocket是啥协议?

66 阅读1分钟

二维码扫码登录

短轮询(伪服务器推)

客户端每隔一到两秒对向后端发送一个请求,看看用户是否成功扫码

问题

1.产生大量http请求,占用带宽资源,也会增加服务器负担

2.用户可能要一到两秒的时间后才能成功登录上

长轮询

客户端将超时设置的很大(比如30s),其中得到了后端响应,用户就成功登录,如果超时立马发送下一次请求,(感觉也可以刷新二维码,要求用户重新刷码)

websocket

适用于聊天室,或者网页游戏等想要服务器主动发消息的情况(打开b站看视频前就有101,switch protocol)

为什么要用wbsocket

http在诞生之初是半双工的,同一时间下只能一端发送数据,为了解决这种问题就使用websocket协议

websocket的建立流程

客户端想升级成websocket协议,就要先发送101请求,并设置upgrade:websocket和一串base64码的headers,如果服务器也支持websocket的话就升级协议,将客户端的base64码用私钥签名后设置**Sec-WebSocket-Accept:**到headers里面