websocket大文件发送(分片传送思想)

2022-09-14 14:38:32 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

目前的项目是在做一款带桌面共享的代码编辑器,其中需要一个发送大文件的功能,传统的node.js处理大文件就是用Buffer.slice(0.offset)的思路把文件分割开,然后通过tcp或udp分开发送。前端中处理二进制的有Blob,它也有slice的方法,也可以将文件拆分开。然后借助websocket发开发送,然后在客户端(注意不是服务端)将文件合并。有人说websocket可以直接发,但是他的大小受到限制,比如发200M的东西,就会出问题。而我的方案就不会存在问题.最主要的是在发送文件的同时也不会影响到桌面共享的速度。

效果图:

下面是两个客户端发送和接受的代码:

发送方:

核心方法如下,注意tp参数代表的是你上传的文件或者采用拖动传入的文件,类型是blob

代码语言:javascript复制
function sendBig(tp){
	var pack_id="pk_" Math.floor(Math.random()*100000);	
	var len=tp.size;
	var sz=[]; 
	kg=true;
	var k=0;
		 if(len>16*1024){
			var p=Math.ceil(len/(16*1024))

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157604.html原文链接:https://javaforall.cn

0 人点赞