从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

20 | 原来WebRTC还可以实时传输文件?

通过信令传递文件的基本信息
文件的读取与发送
通过 RTCDataChannel 对象接收数据
RTCDataChannel 对象的创建
断点续传的重要性
数据类型和大小的差别
使用 RTCDataChannel 对象进行传输
思考时间
具体实现
基本原理
实时传输文件
WebRTC

该思维导图由 AI 生成,仅供参考

上一篇文章中我向你介绍了在 WebRTC 中如何传输非音视频数据,并通过实现一个 1 对 1 实时聊天的例子向你展示了如何使用 RTCDataChannel 对象进行文本数据的传输。
其实利用 WebRTC 的 RTCDataChannel 对象,不光可以实现 1 对 1 的实时聊天,你还可以利用它进行实时的文件传输
实时文件传输是一个非常有用的工具,尤其是通过浏览器进行实时文件传输就更加有价值,因为它不会受到操作系统或开发语言的影响,所以你可以在任何不同的操作系统上进行文件的传输,非常方便。
举个例子,由于工作的需要,你可能经常需要在不同的操作系统间切来切去(一会儿在 Windows 系统上开发,一会儿在 Linux 系统上开发,一会儿又在 Mac 系统上开发),当你想将 Windows 上的文件传到 Linux 系统上时就特别不方便,但如果可以通过浏览器传输文件的话,那将会大大提高你的工作效率。

基本原理

在 WebRTC 中,实时文件的传输与实时文本消息传输的基本原理是一样的,都是使用 RTCDataChannel 对象进行传输。但它们之间还是有一些差别的,一方面是传输数据的类型不一样,另一方面是数据的大小不一样。下面我们就从这两方面来具体讨论一下。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC不仅可以实时传输音视频数据,还可以实现实时文件传输。通过RTCDataChannel对象,可以在浏览器中进行实时文件传输,无受操作系统或开发语言的影响。文章介绍了实时文件传输的基本原理和具体实现步骤。在实现过程中,需要创建RTCDataChannel对象并设置参数,处理接收数据的事件,以及实现文件的读取与发送。此外,还介绍了断点续传的方式进行文件传输以及信令服务器的作用。通过本文,读者可以了解WebRTC中实时文件传输的原理和实现方法,以及如何利用RTCDataChannel对象进行文件传输。文章还控制了通过信令传递文件的基本信息,包括发送端处理和接收端处理。总结了使用RTCDataChannel对象进行文件传输的基本工作原理,以及实现端到端文件传输的步骤。同时提出了思考问题,引发读者思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • xw616525957
    页面被关掉的情况可以考虑用浏览器做个缓存,比如indexedDB.将发送端和接收端的状态和file数据都保存下来,下次进room的时候再恢复上传。 这里有个问题,在一对多的情况下,发送端是不是要维护每个接收端的收发状态。这种情况是不是通过server中转一层比较好,这样可以利用cdn来加速接收端的下载速度。

    作者回复: 如果是一对多,最好是使用服务器中转的方式

    2019-08-29
    5
  • Happy任
    可以将续传chunk序号缓存到localStorage中吧,不过这样用户换浏览器就无法续传了。请问老师有其他解决方案吗?

    作者回复: 没有

    2020-06-09
  • Jason
    有办法恢复被中断的传输:将传输的连接、状态信息保存下来,浏览器再次启动时加载这些信息。

    作者回复: 有没有想过是否还可以通过 Blob 进行断点续传呢?

    2019-08-29
    2
  • 轩爷
    下次再进行连接时,接收方获取本地最后一个块的偏移量,通过信令服务器转发给发送端,发送端监听到message,拿到偏移量,经过计算,开始断点续传。
    2020-07-02
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部