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