【Python】websocket

WebSocket是一种基于TCP的全双工通信协议,用于浏览器与服务器的实时通信。它需要客户端和服务端共同遵循协议来建立连接,包括服务端开启服务、客户端连接并发送验证字符串、服务端加密验证并回传等步骤。在Python中,WebSocket的实现涉及到更多的服务端代码,如消息处理、加密和通信逻辑,而在客户端则相对简单,WebSocket对象提供了许多内置功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值