Можно ли построить торрент-клиент, используя только HTML (5) и JavaScript? - PullRequest
46 голосов
/ 23 января 2011

Больше нечего добавить. Можно ли построить торрент-клиент, используя только HTML и JavaScript. Вы не можете использовать такие вещи, как Java, ActiveX, NaCl ... Если да, пожалуйста, дайте описание высокого уровня.

У меня мало знаний о внешнем интерфейсе, но я думаю, что веб-сокеты смогут работать в сети (возможно ли подключить одного клиента к другому без прохождения всех данных через сервер?). Я знаю, что вы не можете писать файлы с использованием JavaScript, поэтому я думаю, что загружаемый файл либо нужно будет полностью сохранить в памяти, либо клиенту придется использовать один из новых API в HTML5 для хранения контента.

Ответы [ 7 ]

32 голосов
/ 23 января 2011

Нет. Это не так.

Это потому, что спецификация WebSocket выходит за рамки HTML5 и JavaScript ;-) При этом возникает вопрос: «использовать функции, изначально поддерживаемые в [прогрессивных / будущих] браузерах», тогда ...

... все еще нет : -)

Это потому, что WebSocket требует специального рукопожатия для установки с ограничениями. Это не общедоступный открытый TCP-фестиваль. Подход потребует либо

  1. клиентов, которые будут изменены для принятия запросов WebSocket (а также для решения любых проблем с межсайтовым доступом)

  2. или, более реалистично, сервер, который должен пройти через

16 голосов
/ 02 марта 2013

Это возможно при использовании API Chrome Apps : chrome.socket и chrome.fileSystem .

Существует хотя бы один чистый JavaScriptреализация для Google Chrome: JSTorrent .

15 голосов
/ 28 октября 2014

Существует недавняя реализация, основанная на WebRTC, которая работает в узле и браузере: https://github.com/feross/webtorrent

9 голосов
/ 21 августа 2013

Нет веской причины, почему это нельзя сделать сегодня.Оба BitTorrent / uTorrent имеют код для поддержки соединений веб-сокетов с двоичными кадрами.Тем не менее, они в настоящее время компилируются без поддержки (из-за политических / продуктовых причин, я думаю).Раньше я работал в BitTorrent, и другой инженер ( Arty ) написал поддержку.Некоторое время было действительно круто иметь возможность загружать торренты на iPad с мобильного Safari.(достаточно забавно сохранять прямо на Google Диск)

Можно настроить HTTP-трекеры для отправки заголовков Access-Control-Allow-Origin.

Кроме того, протокол объявления трекера может использовать бит в ключе "msgstr "поле, указывающее, что клиент принимает подключения к веб-сокету.Тогда специальный аргумент, такой как «typewant», мог бы указывать, что в ответе на объявление должны возвращаться только клиенты, отправившие этот бит.

Протокол отслеживания также может быть расширен аналогичным образом для поддержки согласования соединений WebRTC P2P DataChannel, так что соединенияможно сделать непосредственно браузером <-> браузер.

На данный момент у нас есть API платформы chrome.socket и jstorrent , пакетное приложение Chrome (в основном предназначенное для ChromeOS)

8 голосов
/ 09 декабря 2011

Вы не можете с WebSockets, потому что это строго клиент-сервер. Но будущий стандарт WebRTC, хотя и в основном нацеленный на аудио- и видеоконференции, имеет условие для общих передач данных клиент-клиент. Если это положение дойдет до окончательной версии, то у вас будет жизнеспособный способ реализовать универсальную одноранговую передачу данных между браузерами.

3 голосов
/ 21 июля 2013

Я опаздываю на вечеринку, но, поскольку этот вопрос по-прежнему остается одним из лучших в результатах Google, я все равно отвечу.

Вы можете написать связанные с BitTorrent веб-приложения или расширения браузера с помощью Btapp.js , который использует интерфейс Javascript, предоставляемый BitTorrent Torque .Когда вы вызываете метод подключения, пользователю будет предложено установить BitTorrent Torque, вот и все.Если вы проверяете существующие проекты, используя их, вы можете делать что-то интересное - потоковое мультимедиа, совместное использование перетаскивания и т. Д.

Что касается решений без какой-либо зависимости, то упомянутые Ником Расслером все еще кажутсятолько возможные варианты.

3 голосов
/ 20 сентября 2012
...