本文来自WebTorrent的创始人、PeerCDN联合创始人Feross Aboukhadijeh,他介绍了一种基于WebRTC通信的Web协议WebTorrent,通过WebTorrent可以节省服务器资源,降低成本。LiveVideoStack对原文进行了摘译。

文 / Feross Aboukhadijeh

译 / 元宝

审校 / Ant

原文:

https://hacks.mozilla.org/2018/08/dweb-building-a-resilient-web-with-webtorrent/

WebTorrent是一种在Web浏览器中运行的BitTorrent协议的实现。这种服务文件的方法意味着,网站可以与尽可能多的用户进行扩展,同时浏览网站,从而消除在数据中心运行集中服务器的成本。本文由Feross Aboukhadijeh撰写,他是WebTorrent的创始人和PeerCDN的联合创始人,也是一位多产的NPM模块作者......最终统计有225个模块!-Dietrich Ayala

什么是WebTorrent?

WebTorrent是第一个在浏览器中工作的种子客户端。它完全由JavaScript编写,并使用WebRTC进行真正的点对点传输。无需浏览器插件,扩展或安装。

使用开放式Web标准,WebTorrent将网站用户连接在一起,形成分布式的和分散式的浏览器到浏览器网络,以实现高效的文件传输。使用基于WebTorrent的网站的人越多,它就越快,越有弹性。

架构

WebTorrent协议就像BitTorrent协议一样,除了它使用的是WebRTC而不是TCP或uTP作为传输协议。

为了支持WebRTC的连接模型,我们对跟踪器协议进行了一些更改。因此,基于浏览器的WebTorrent客户端或“web peer”只能连接到支持WebTorrent / WebRTC的其他客户端。

一旦连接对等体后,用于通信的有线协议与正常的BitTorrent就完全相同。这应该使现有流行的torrent客户端如Transmission和uTorrent更容易添加对WebTorrent的支持。Vuze已经支持WebTorrent了!

入门

只需几行代码即可在浏览器中下载torrent!

要开始使用WebTorrent,只需在页面上包含webtorrent.min.js脚本即可。你可以从WebTorrent网站下载脚本或链接到CDN副本。

<script src="webtorrent.min.js"></script>

这为窗口对象提供了一个WebTorrent函数。还有一个npm包可用。

var client = new WebTorrent()

// Sintel, a free, Creative Commons movie
var torrentId = 'magnet:...' // Real torrent ids are much longer.

var torrent = client.add(torrentId)

torrent.on('ready', () => {
// Torrents can contain many files. Let's use the .mp4 file
var file = torrent.files.find(file => file.name.endsWith('.mp4'))

// Display the file by adding it to the DOM.
// Supports video, audio, image files, and more!
file.appendTo('body')
})

就是这样的!现在,你将看到BT流进入到标签为<video width="300" height="150">的网页中!

更多

你可以浏览webtorrent.io或者在Freenode IRC或Gitter上的#webtorrent中提问来了解更多信息。我们正在寻找更多能够在GitHub问题跟踪器上回答问题并帮助解决问题的人。如果你是一个友善,乐于助人的人,并想乘机深入挖掘洪流协议或WebRTC,那么这就是你的机会!

Dweb:使用WebRTC / WebTorrent构建弹性Web相关推荐

  1. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  2. 构建弹性架构组件—ELB和ASG

    构建弹性架构组件-ELB和ASG 1 ELB负载均衡器 2 ELB创建 3 ELB健康检查 4 ELB会话保持 5 EC2 ASG自动扩展组 6 EC2 ASG扩展策略 1 ELB负载均衡器 纵向扩展 ...

  3. 使用Nomad构建弹性基础架构:重新启动任务

    Nomad是一个功能强大.灵活的调度器,适用于长期运行的服务和批处理任务.通过广泛的驱动程序,Nomad可以调度基于容器的工作负载.原始二进制文件.java应用程序等等.Nomad操作简单,易伸缩,与 ...

  4. 微服务 弹性伸缩_如何构建弹性微服务

    微服务 弹性伸缩 Kasun Indrasiri是WSO2的集成架构主管. 开发人员越来越依赖微服务体系结构将应用程序构建为一组细粒度,重点狭窄且独立的服务,每个服务均独立开发和部署. 尽管微服务方法 ...

  5. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  6. flask url构建_如何为生产构建构建Flask-RESTPlus Web服务

    flask url构建 by Greg Obinna 由格雷格·奥比纳(Greg Obinna) 如何为生产构建构建Flask-RESTPlus Web服务 (How to structure a F ...

  7. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击

    本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...

  8. Linux -- 利用IPS(***防御系统) 构建企业Web安全防护网

    一.IPS系统简介 (应用层上应用) 防火墙只在网络层上应用,IPS 和防火墙相比,检测及过滤功能更为强大,它通过串联在网络主干线路上,对防火 墙所不能过滤的***进行过滤.这样一个两级的过滤模式,可 ...

  9. 谈谈弹性Web托管的“弹性”

    熟悉网站运营的站长都知道,一个网站运营到了一定程度,业务量上升,用户访问量急剧增长,带来的是网站服务器负载暴涨,CPU.内存和网络带宽等各项资源使用吃紧,进而影响到了用户请求的处理:从用户体验上看,很 ...

最新文章

  1. RSA解密时javax.crypto.BadPaddingException: Data must start with zero
  2. boost::proto::switch_相关的测试程序
  3. P8实战(一):架构概论,从过去到未来
  4. 阿里云插件新版发布,多特性助力提升开发者体验
  5. laravel API开发,使用dingo/api
  6. tomcat配置文件context.xml和server.xml分析
  7. WF+WCF+WPF第三天-WF实现一个软件自动测试框架
  8. 网站的服务器怎么维护,网站服务器怎么维护
  9. C++编程基础一 28-编程练习一
  10. android 锁屏显示消息格式,通知!在锁屏上显示Android通知 | MOS86
  11. Lvgl(V8.2)自定义字体实现多国语言切换功能
  12. 全自动高清录播服务器,高清高清录播服务器 高清全自动录播系统 方便携带 搭建快捷...
  13. Excel-几行几行进行转置
  14. 如何更改IE窗口初始大小及位置
  15. Window 10未连接到互联网
  16. Rasa课程、Rasa培训、Rasa实战Rasa 3.1.0最新版本发布 2022-03-25
  17. 2022杭电多校八 1011-Stormwind(贪心)
  18. Tomcat配置问题(踩坑记录)
  19. 线性dp:DP9 环形数组的连续子数组最大和
  20. 个人站长可以考虑的几种赚钱模式

热门文章

  1. “前进!前进!不择手段地前进!”——托马斯·维德
  2. 双功能交联剂丨Lumiprobe 磺基花青7二羧酸研究
  3. 微信小程序(日历/日期)选择插件
  4. i5 11300h和r5 4600h的差别大吗
  5. 防静电手环在计算机中的功能,无线静电手环是怎样防静电的原理是什么
  6. 2017目标跟踪算法综述
  7. 2020震撼的AE模版SDK
  8. 国内安全厂商护航XP能力引争议
  9. 数据结构 树的基本介绍
  10. 循迹智能车红外模块的选取