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 版权协议,转载请附上原文出处链接和本声明。