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

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

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

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

效果图:websocket大文件发送(分片传送思想)

 

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

   发送方:

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

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.net/157604.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • soapUI简介

    soapUI简介接口测试中 SoapUI 是很好的第三方工具 可模拟 http webservice 等多种协议请求进行测试 SoapUI 模拟请求方发送 http webservice 的 request 请求 SoapUI 模拟服务端作为测试桩进行 http 和 webservice 协议接口测试 专门针对 webservice 接口的测试时 SoaqUI 表现出来的性能更优越 更真实 更接近地反映接口的性能指标 SOAPW

    2025年7月9日
    0
  • 安卓应用优化篇

    安卓应用优化篇

    2021年9月1日
    40
  • pycharm中使用anaconda部署python环境_anaconda pycharm环境配置

    pycharm中使用anaconda部署python环境_anaconda pycharm环境配置总有那么多的知识点,看起来这么简单(其实解决的方法也很简单,无非是某个地方要加括号,要加双括号等小问题),但没有人好好讲的话会浪费很多时间。笔者先安装了Anaconda和Spyder,运行TensorFlow-GPU,最近安装了pycharm,想利用之前配置好的环境(省去依赖包的配置)。找了一些资源都没有将清楚。以下简洁版:1、新建项目,选择“Existinginterpreter”…

    2022年8月25日
    4
  • python开发h5页面_大数据和python有关吗

    python开发h5页面_大数据和python有关吗文章目录前言HDF与h5简介数据组织方式HDFView下载与安装在WIN10系统安装后打开出现黑框闪退的解决方法python对h5文件的操作批量制作h5文件h5文件的提取,另存为nii文件前言一般来说,深度学习的训练数据和训练后的参数都会保存为h5格式文件,对于训练数据来说,深度学习中当训练大量数据时,如果从硬盘中加载再预处理,再传递进网络,这是一个非常耗时的过程。其中从硬盘中读取图片会花费大量时间,更可行在方法是将其存在单个文件中,如h5文件。那么h5文件对于深度学习训练具有什么优势呢?可以支持

    2022年9月4日
    2
  • 剑指Offer面试题:13.合并两个排序的链表

    一题目:合并两个排序的链表二代码实现将链表换成数组做简单的循环和递归测试(1)循环实现(2)递归实现

    2021年12月19日
    32
  • Oracle listagg去重distinct三种方法总结

    Oracle listagg去重distinct三种方法总结一、简介最近在工作中,在写oracle统计查询的时候,遇到listagg聚合函数分组聚合之后出现很多重复数据的问题,于是研究了一下listagg去重的几种方法,以下通过实例讲解三种实现listagg去重的方法。二、方法首先还原listagg聚合之后出现重复数据的现象,打开plsql,执行如下sql:selectt.department_namedepname,…

    2022年9月7日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号