js前端通过切包完成断点上传的功能,现在是准备用websocket进行上传,前端把大文件切一段一段的通过websocket传给后台,然后后台拼接,但是现在有个问题
用for循环在websocket感觉似乎发包的频率有些太高了,感觉上线以后服务器可能承受不了,很多时候,这边websocket上,js发包发完了,但是服务器还在一步一步的接包和回复,所以想问有没有什么方法让前端发包的频率慢些。。。
果然发起网络请求不宜用for循环233333
前端
socket = new WebSocket(url);
//……………………(中间代码省略)
for (var chunk = 0; chunk < chunks; ++chunk) {
console.log('chunk : ' + chunk);
var blobFrom = chunk * eachSize;
var blobTo = (chunk + 1) * eachSize > totalSize ? totalSize : (chunk + 1) * eachSize;
percent = (100 * blobTo / totalSize).toFixed(1);
socket.send(file.slice(blobFrom, blobTo));
}
服务端:(swoole)
//前后代码省略
$server->on('message', function (swoole_websocket_server $server, $frame){
$data = $frame->data;
file_put_contents('./' .'balabala'.$frame->fd.'.png',$frame->data ,FILE_APPEND);
});
问个问题,为什么 "js前端通过切包完成断点上传的功能,现在是准备用websocket进行通信", 断点上传要通过websocket?