【Python】websocket

  • Post author:
  • Post category:python


WebSocket协议是基于TCP的一种新的协议。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,属于长链接,在浏览器和服务端通过Socket进行通信。

除了能响应请求外,还能主动向客户端推送消息

要达到这个效果,需要客户端和服务端都遵循websocket协议建立连接

1.服务端开启服务,等待客户端连接

2.客户端连接,并随即生成一段字符串发给服务端

3。服务端拿到字符串,和magic string一起进行sha1加密再发给客户端

4.客户端也是相同加密方法,将结果和服务端发来的结果比对,一样则完成websocket连接,否则不能通信



服务端

import socket
import base64
import hashlib
def send_msg(conn, msg_bytes):
    """
    WebSocket服务端向客户端发送消息(格式处理)
    :param conn: 客户端连接到服务器端的socket对象,即: conn,address = socket.accept()
    :param msg_bytes: 向客户端发送的字节
    :return:
    """
    import struct

    token = b"\x81"
    length = len(msg_bytes)
    if length < 126:
        token += struct.pack("B", length)
    elif length <= 0xFFFF:
        token += struct.pack("!BH", 126, length)
    else:
        token += struct.pack("!BQ", 127, length)

    msg = token + msg_bytes
    conn.send(msg)
    return True
def get_headers(data):
    """
    处理客户端发来的连接验证信息
    将请求头格式化成字典
    :param data:
    :return:
    """
    header_dict = {
   }
    data = str(data, encoding='utf-8')



    header, body = data.split('\r\n\r\n', 1)<



版权声明:本文为csdniter原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。