websocket

作者: MononokeHime | 来源:发表于2018-09-05 20:40 被阅读0次
  • Http协议是短连接,即用户端请求,服务端响应,之后关闭连接
  • websocket协议本质上就是创建socket,不断开,相互通信,全双工

那如何让浏览器与服务器通过websocket协议通讯呢?那就是双方必须满足一定的通讯规则啦!

当然你不能在浏览器的网址上去输入支持websocket协议的服务器ip,因为浏览器走的是http协议,我们必须使用js提供的WebSocket去访问,看下面的js代码

<script type="text/javascript">
    var socket = new WebSocket("ws://127.0.0.1:8002/xxoo");
    ...
</script>

那整个通信的过程是怎样的呢?

  1. 客户端发送握手请求(非三次握手),请求格式有点类似于http,但是包含了一个字段Sec-WebSocket-Key,它的值是随机的

GET /chatsocket HTTP/1.1
Host: 127.0.0.1:8002
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://localhost:63342
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: mnwFxiOlctXFN/DeMt1Amg==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

2.服务端接受握手请求并解析出这是一个websocket请求,并提取出Sec-WebSocket-Key的值进行sha1加密,之后包装成特定的格式返回给客户端。
3.客户端收到返回的数据后进行解密,判断是不是自己刚刚发出去的,如果是就建立了连接,否则握手失败
4.接着双方就可以正常通信了(整个通信过程又是加密和解密,这里就不介绍了)

参考

https://www.cnblogs.com/wupeiqi/p/6558766.html

相关文章

网友评论

      本文标题:websocket

      本文链接:https://www.haomeiwen.com/subject/uooowftx.html