Changes

Jump to: navigation, search

AceStream 3.0

2,112 bytes added, 11:43, 15 January 2014
Метатрекеры
===Метатрекеры===
 
Метатрекер - это сервер, который сообщает узлам о доступных трекерах и стартовых узлах.
 
URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл.
 
Метатрекеры позволяют динамически добавлять трекеры и/или стартовые узлы для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла.
Пример запуска источника с метатрекером:
--private-node 1 \
--upload-to "192.168.1.3:8631"</nowiki>
 
Метатрекер принимает запросы по протоколу HTTP и выдает ответ в формате JSON, поэтому метатрекер может быть реализован на базе любого веб-сервера.
 
Каждый узел при запуске трансляции отправляет на метатрекер HTTP GET запрос с параметром <tt>infohash</tt> (хеш трансляции в виде hex-строки). Пример запроса на метатрекер:
<nowiki>http://example.org/metatracker.php?infohash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3</nowiki>
 
Формат ответа:
<nowiki>{
"trackers": ["tracker_url_1", "tracker_url_2", ...],
"startup_nodes": ["node1_address", "node2_address", ...],
"interval": UPDATE_INTERVAL_IN_SECONDS
}</nowiki>
 
где
*tracker_url_1, tracker_url_2 - URL трекеров
*node1_address, node2_address - адреса стартовых узлов в виде строк в формате ip:port (например, 192.168.1.2:8632)
*UPDATE_INTERVAL_IN_SECONDS - интервал обновления в секундах (как часто каждый клиент должен повторно обращаться на метатрекер)
 
Пример ответа:
<nowiki>{
"trackers":["udp:\/\/tracker.example.org:2710\/announce"],
"startup_nodes":["192.168.1.2:8632"],
"interval":3600
}</nowiki>
Пример серверного кода метатрекера на PHP:
<nowiki><?php
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : ''; $trackers = array( 'udp://tracker.example.org:2710/announce', ); $startup_nodes = array( '192.168.1.2:8632', ); $data = array( 'trackers' => $trackers, 'startup_nodes' => $startup_nodes, 'interval' => 30, ); header('Content-Type: application/json'); echo json_encode($data);</nowiki>
===Веб-интерфейс узла===

Navigation menu