Flask Socket IO,需要帮助了解消息大小增长的原因



嘿,伙计们

我的工作:

我通过烧瓶插口io将现场摄像机图像数据(jpeg编码为二进制(流式传输到客户端,socket消息有一个框架和一些元数据。

每个发出的消息总共约有~350KB

当我流式传输一台相机时,chrome devtools上的套接字消息的大小会显示给我正确的大小。

开发工具单凸轮

当我流式传输多个相机的套接字消息时,有时会增长到3MB。当我在python端记录大小时,每个发出的消息的大小仍然在350KB左右。

开发工具多摄像头

有人能解释为什么会发生这种事吗谢谢

代码:

此函数在python侧发送帧

@socket_io.on('frame_request')
def connect(data):
while app.socket_online:
frame = app.dm.get_frame_as_bytes(data["id"])
emit('data',  {'meta': app.dm.get_meta_data(data["id"]), 'frame': frame})
socket_io.sleep(1/12)

此功能接收传入帧

handle_frame(frame) {
var blob = new Blob([frame], {
type: 'image/jpeg'
});
var url_create = window.URL || window.webkitURL;
var imageUrl = url_create.createObjectURL(blob);
this.img = imageUrl;
}

您使用的是Socket.IO的轮询传输。在某些情况下,当发射以高频发送时,该传输可以将多个数据包组合在一个轮询响应中以提高效率。

如果启用WebSocket(无论如何都应该启用,因为它会给你更好的性能(,那么每个帧都会在自己的单独数据包中发送。

相关内容

最新更新