WebSocket是一种全双工通信协议,允许在单个TCP连接上进行双向通信。WebSocket协议允许服务器通过将请求头Upgrade设置为WebSocket来升级HTTP连接。这使得WebSocket协议可以在浏览器和服务器之间建立持久连接,能够实现实时数据传输和通信。
WebSocket协议基于标准的HTTP和TCP网络协议,并通过自定义协议的方式来处理数据。WebSocket协议通过发送和接收数据帧来实现通信,这些帧包含操作码、负载数据和掩码。掩码用于保护数据的安全性,操作码用于标识帧的类型,负载数据则是消息的内容。WebSocket协议支持二进制和文本数据传输。
WebSocket协议在实时通信方面有很好的应用,比如在线游戏、聊天应用、音视频传输等。由于WebSocket协议通过单个TCP连接进行双向通信,因此它比传统的HTTP请求响应模型更加高效和实时。
代码
import websocket
import base64
def on_message(ws, message):
print("收到消息:", message)
def on_error(ws, error):
print("出现错误:", error)
def on_close(ws):
print("WebSocket连接已关闭")
def on_open(ws):
print("WebSocket连接已打开")
# 读取音频流
with open("test.wav","rb") as f:
data = f.read()
# encoded_string = base64.b64encode(f.read())
print(f"读取到的文件长度是: {len(data)}")
ws.send(data)
print("================================")
ws.send(data,opcode=websocket.ABNF.OPCODE_BINARY)
# 发送数据
# ws.send("Hello, WebSocket!")
if __name__ == "__main__":
websocket.enableTrace(False) # 启用调试信息
ws = websocket.WebSocketApp("ws://ip:port/path", # WebSocket接口地址
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever() # 保持WebSocket连接