javascript - js 用for循环通过websocket send数据,如何让他发包频率稍微降低

查看:813
本文介绍了javascript - js 用for循环通过websocket send数据,如何让他发包频率稍微降低的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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?

这篇关于javascript - js 用for循环通过websocket send数据,如何让他发包频率稍微降低的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆