gpt4 book ai didi

javascript - 为什么套接字之间的数据传输需要很长时间?

转载 作者:行者123 更新时间:2023-12-03 06:09:18 25 4
gpt4 key购买 nike

我已经实现了一个基于网络的客户端-服务器系统。目标是通过套接字向服务器请求图像文件。

这是我在客户端的代码。 [嵌入Javascript代码]

 <a id="downloadLnk" download="new.jpeg" style="color:red">Download as image</a>

var socket = io("ipaddress");
socket.on("image", function(info) {
if (info.image) {
var end1 = new Date().getTime();
document.getElementById("demo1").innerHTML = end1;
var img = new Image();
img.src = 'data:image/jpeg;base64,' + info.buffer;
}

function download() {
this.href = img.src;
};
downloadLnk.addEventListener('click', download, false);
});

这是服务器端的代码:[node.js 服务器,express 模块,fs 模块]

io.on('connection', function(socket){
var start1 = new Date().getTime();
console.log(start1);

fs.readFile(__dirname + '/aorta-high512.jpg', function(err, buf){
socket.emit('image', { image: true, buffer: buf.toString('base64') });
});
});

我正在传输大小为 88KB 的 512x512 分辨率图像,大约需要一秒钟。同样,对于 259KB 文件,大约需要 1.2 秒,对于 2MB 文件,大约需要 2.5 秒。我不明白为什么要花这么多时间?我在 speedtest.net 中检查了可用带宽、网络速度。下载速度95.97Mbps,上传速度23.30Mbps。

请问为什么数据传输时间这么慢?有没有其他方法可以更快地传输数据?我确实知道 96Mbps 是可用带宽,但为了测试,我从互联网下载了一个 100Mb 的 pdf 文件,大约需要 12-14 秒。考虑到这一点,我至少期望以至少 2-3 Mbps 的速率更快地传输数据。

最佳答案

Socket.IO 支持发送/接收二进制数据,因此利用这一点可以避免昂贵的数据编码。

其次,在浏览器中生成/使用数据 URL 时,必须注意 URL 长度。许多浏览器对此类数据 URL 的最大大小施加各种限制。一种可能的解决方法(不包括直接通过 HTTP GET 提供图像)可能包括让服务器将图像拆分为较小的一组图像,然后将其与堆叠的 img 标签一起使用以提供外观单个图像。

关于javascript - 为什么套接字之间的数据传输需要很长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com