为什么套接字之间的数据传输需要很多时间
Why does datatransfer between sockets takes lot of time?
我实现了一个基于web的客户端-服务器系统。目标是通过套接字向服务器请求一个图像文件。
这是我在客户端的代码。[嵌入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 server, express module, fs module]
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.2s,对于2MB的文件,大约需要2.5s。我不明白为什么要花这么多时间?我在speedtest.net上检查了我的网络的可用带宽和网速。下载速度为95.97Mbps,上传速度为23.30Mbps。
你能告诉我为什么数据传输时间这么慢吗?有没有其他更快的方法来传输数据?我当然知道96Mbps是可用的带宽,但为了测试,我从网上下载了一个100Mb的pdf文件,大约花了12-14秒。看到这一点,我至少期望数据传输速度更快,速率至少为2-3 Mbps。
插座。IO支持发送/接收二进制数据,因此利用它将允许您避免昂贵的数据编码。
其次,在浏览器中生成/使用数据URL时,必须注意URL的长度。许多浏览器对此类数据url的最大大小施加了各种限制。一种可能的解决方法(不包括通过HTTP GET直接提供图像)包括让服务器将图像拆分为更小的图像集,然后将其与堆叠的img
标记一起使用,以提供单个图像的外观。
相关文章:
- 使用JavaScript在网页之间进行数据传输
- 使用javascript asp.net将listbox数据传输到另一个listbox
- 通过 ajax 将数据传输到 php
- angularjs模态将数据传输到外部控制器的正确方法
- AJAX和PHP数据传输不起作用
- 使用 ajax 将 JavaScript 数据传输到 PHP
- Chrome中的数据传输
- KendoUI数据源赢得't将数据传输到ListView
- 使用锚标记进行数据传输
- 从JavaScript应用程序到Rails服务器的数据传输
- 如何使用 meteor.js 在浏览器中监控数据传输
- 跳转到另一个页面并同时将数据传输到该页面
- Ajax 数据传输器
- 将 Excel 数据传输到网页上的文本字段和按钮中
- 如何在 HTML5 放置事件的特定位置附加数据传输内容
- window.name 作为数据传输:一种有效的方法
- PHP 显示存储的时间数据,并在考虑不同时区的同时存储时间数据
- 如何将动态元素数据传输到 struts2.
- 在 Flask 中将客户端数据传输到服务器端
- 为什么套接字之间的数据传输需要很多时间