WebSocket是一种全双工通信协议,允许在单个TCP连接上进行双向通信。WebSocket协议允许服务器通过将请求头Upgrade设置为WebSocket来升级HTTP连接。这使得WebSocket协议可以在浏览器和服务器之间建立持久连接,能够实现实时数据传输和通信。
WebSocket协议基于标准的HTTP和TCP网络协议,并通过自定义协议的方式来处理数据。WebSocket协议通过发送和接收数据帧来实现通信,这些帧包含操作码、负载数据和掩码。掩码用于保护数据的安全性,操作码用于标识帧的类型,负载数据则是消息的内容。WebSocket协议支持二进制和文本数据传输。
WebSocket协议在实时通信方面有很好的应用,比如在线游戏、聊天应用、音视频传输等。由于WebSocket协议通过单个TCP连接进行双向通信,因此它比传统的HTTP请求响应模型更加高效和实时。
代码
import websocket
import base64def 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_openws.run_forever() # 保持WebSocket连接