还有很多要补充的内容。是否可以仅使用HTML和JavaScript构建torrent客户端。你不能使用像Java,ActiveX,NaCl这样的东西......如果是的话,请给出高级描述。
我对前端dev没有太多了解,但我认为websockets能够进行网络连接(是否可以将一个客户端连接到另一个客户端而不需要通过服务器获取所有数据?)。我知道您无法使用JavaScript编写文件,因此我认为要下载的文件必须完全保存在内存中,否则客户端必须使用HTML5中的一个新API来存储内容。
答案 0 :(得分:32)
否。不是。
这是因为WebSocket规范不属于HTML5和JavaScript ;-)尽管如此,提出“使用[渐进式/即将推出的]浏览器本机支持的功能”然后...
...仍然没有: - )
这是因为WebSocket需要特殊的握手来设置限制。这不是一个免费的开放式TCP-fest。该方法需要
要修改客户端以接受WebSocket请求(以及处理任何跨站点访问问题)
或者更现实地说,是一个通过
答案 1 :(得分:16)
可以使用Chrome Apps APIs:chrome.socket和。{ chrome.fileSystem
Google Chrome至少有一个纯JavaScript实现:JSTorrent。
答案 2 :(得分:15)
最近基于WebRTC的实现在节点和浏览器中工作: https://github.com/feross/webtorrent
答案 3 :(得分:9)
今天无法做到这一点是没有充分理由的。 BitTorrent / uTorrent都有代码支持二进制帧的websocket连接。但是,它们目前是在没有支持的情况下编译的(由于政治/产品原因,我认为)。我曾经在BitTorrent工作,另一位工程师(Arty)写了支持。有一段时间,能够从移动Safari下载种子到iPad上真的很酷。 (足够有趣地直接保存到Google云端硬盘)
可以将HTTP跟踪器配置为发送Access-Control-Allow-Origin标头。
跟踪器通告协议也可以使用“密钥”字段中的一个位来指示客户端接受websocket连接。然后像“typewant”这样的特殊参数可能表明通知响应应该只返回发送该位的客户端。
跟踪器协议也可以类似地扩展,以支持WebRTC P2P DataChannel连接的协商,以便可以直接与浏览器< - >浏览器建立连接。
目前,我们有chrome.socket平台API和jstorrent,这是一个Chrome打包应用(主要针对ChromeOS设计)
答案 4 :(得分:8)
您不能使用WebSockets,因为它们严格来说是客户端服务器。但即将推出的WebRTC标准虽然主要针对音频/视频会议,但它具有provision通用客户端 - 客户端数据传输。如果此规定使其成为最终版本,那么您将有一种可行的方法在浏览器之间实现通用的对等数据传输。
答案 5 :(得分:3)
答案 6 :(得分:3)
我迟到了,但由于这个问题仍然是谷歌搜索结果中的佼佼者,我还是会回答。
您可以使用Btapp.js编写与BitTorrent相关的网络应用或浏览器扩展程序,它使用BitTorrent Torque提供的Javascript界面。当您调用connect方法时,将提示用户安装BitTorrent Torque,就是这样。如果您使用它来检查现有项目 - 流媒体,拖放共享等等,那么一些很酷的事情会发生。
对于没有任何依赖性的解决方案,Nick Russler提到的解决方案似乎仍然是唯一可行的选择。