websocket --工作原理

Posted forjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket --工作原理相关的知识,希望对你有一定的参考价值。

1,简历socket连接,启动服务端
2,客户端在html里面写数据建立连接
<script type="text/javascript">
var socket = new WebSocket("ws://127.0.0.1:8002/xxoo");
...
</script>

3,双方建立握手
服务端拿到,客户端传过来的数据
拿到头部传过来的Sec-WebSocket-Key
拿magic_string和Sec-WebSocket-Key 进行hmac1加密,再进行base64加密
把加密结果返回给客户端

4,如果他加密的结果返回给客户端
如果和客户端一样,则继续连接,
如果不一样,则客户端断开与服务器的连接

5,客户端和服务端传输数据时,需要进行封包和解包的过程,客户端的javascript已经封装封包和解包的过程,
但是socket服务端需要手动实现.

6,解包的过程分为3步: PS:payload像是一个标识,告诉程序到我这里就执行完毕,后面就是其他东西,例如masking key
和数据的内容
1,如果payload length的长度小于125,后面的数据
2,如果payload length长度等于126,则后面16位就是masking key,在masking key后面就是数据
3,如果payload length长度等于127,则后面的64位,就是masking key,在masking key后面就是数据

7.服务器发送数据给客户端时,也需要封包.



















以上是关于websocket --工作原理的主要内容,如果未能解决你的问题,请参考以下文章

关于websocket数据传输

websocket为啥只需一次握手

Cowboy.WebSockets 开源 WebSocket 网络库

2-zuul转发websocket的坑

websocket + vue

Websocket配置证书支持wss