-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
大哥,我根据你的代码使用python实现了一遍,目前可以监听到数据,但是经过40秒就会自动断开,目前不知道是心跳发送的有问题还是ack响应的有问题,请大哥帮我分析下,万分感谢!
这是心跳方法
async def send_heartbeat_message(self, websocket):
try:
heartbeat_msg = webcast_pb2.WebcastHeartBeatMessage()
heartbeat_msg.RoomId = self.room_id
heartbeat_msg.SeqId = self.seq_id
push_frame = webcast_pb2.WebcastImHeartBeatMessagePushFrame()
push_frame.PayloadEncoding = "pb"
push_frame.PayloadType = "hb"
push_frame.Payload = heartbeat_msg.SerializeToString()
frame_data = push_frame.SerializeToString()
b64_data = base64.b64encode(frame_data).decode('utf-8')
log(f"💓 发送心跳消息 (Base64): {b64_data}")
self.seq_id += 1
await websocket.send(frame_data)
except Exception as e:
print(f"❌ 心跳发送失败: {e}")
raise # 触发断开连接
这是ACK响应
async def send_ack(self, internal_ext, log_id):
metadata1 = webcast_pb2.CustomMetadata()
metadata1.unknown1 = 98
pushFrame = webcast_pb2.WebcastAckMessagePushFrame()
pushFrame.CustomData1 = metadata1.SerializeToString()
pushFrame.PayloadType = 'ack'
pushFrame.Payload = internal_ext.encode('utf-8')
pushFrame.LogId = log_id
frame_data = pushFrame.SerializeToString()
b64_data = base64.b64encode(frame_data).decode('utf-8')
log(f"💓 Ack响应消息 (Base64): {b64_data}")
await self.ws.send(frame_data)
Metadata
Metadata
Assignees
Labels
No labels