zoukankan      html  css  js  c++  java
  • websocket是如何进行建立连接与通信的?(简单理解)

    握手过程:

      websocket-client端通过ws协议向websocket-server端发起连接请求前,首先在自己的请求头中添加Sec-Websocket-Key键值对,值为根据自己账号通过一定的方式生成的字符串,client端发送自己的key后,server端取出并保存该字符串后,将该字符串与魔法字符串拼接后先后经过sha1、base64加密后获得与此client端的通信密钥保存并发送给client端,client端在本地保存此通信密钥,此时server端与client端完成握手。
    通信过程:

      server端或client端在收到加密信息(字节类型)后,将加密信息的第二个字节与127进行与位运算,根据位运算的结果分为=127、=126、<=125三种情况,根据不同的位运算结果分别取出其掩码(mask)部分和数据部分,将掩码部分与数据进行^(异或)运算即得到真实的数据(字节类型),根据编码类型进行解码后即得到可读性的数据。

    加密过程不再赘述,详看代码即可

     1 import struct
     2 msg_bytes = "hello".encode("utf8")
     3 token = b"x81"
     4 length = len(msg_bytes)
     5 
     6 if length < 126:
     7     token += struct.pack("B", length)
     8 elif length == 126:
     9     token += struct.pack("!BH", 126, length)
    10 else:
    11     token += struct.pack("!BQ", 127, length)
    12 
    13 msg = token + msg_bytes
    14 
    15 print(msg)
    加密算法脑瓜疼
  • 相关阅读:
    搭建集群时遇到各种奇葩问题的大招~~
    oracle初学心得(转)
    "小寒"饮食养生
    时刻修正自已的思想
    myeclipse使用
    从javascript语言本身谈项目实战(转)
    Java的内存泄漏(转)
    概念解释
    小穴位大健康——李智
    历史朝代表
  • 原文地址:https://www.cnblogs.com/zepc007/p/10505189.html
Copyright © 2011-2022 走看看