Flask Socket IO,需要帮助来理解为什么消息会变大

Flask Socket IO, Need help to understand why message grows in size

大家好

我是做什么的:

我通过 flask socket-io 将实时相机图像数据(jpeg 编码为二进制)流式传输到客户端, 套接字消息有一个框架和一些元数据。

每条发出的消息总共大约 ~350KB。

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

Dev tools singel cam

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

Dev tools multiple cameras

谁能解释一下为什么会这样?谢谢

代码:

此函数在帧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(无论如何都应该启用,因为它会给您带来更好的性能),那么每个帧都将在其自己的单独数据包中发送。