379
edits
Changes
→Метатрекеры
===Метатрекеры===
Метатрекер - это сервер, который сообщает узлам о доступных трекерах <!-- и стартовых узлах-->.
URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл.
Метатрекеры позволяют динамически добавлять трекеры <!--и/или стартовые узлы -->для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла.
Пример запуска источника с метатрекером:
<nowiki>{
"trackers": ["tracker_url_1", "tracker_url_2", ...],
"interval": UPDATE_INTERVAL_IN_SECONDS
}</nowiki>
<!--"startup_nodes": ["node1_address", "node2_address", ...],-->
где
*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"],
"interval":3600
}</nowiki>
<!-- "startup_nodes":["192.168.1.2:8632"], -->
Пример серверного кода метатрекера на PHP:
<nowiki><?php
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : '';
$trackers = array(
'udp://tracker.example.org:2710/announce',
);
$data = array(
'trackers' => $trackers,
'interval' => 30,
);
header('Content-Type: application/json');
echo json_encode($data);</nowiki>
<!--
<nowiki><?php
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : '';
header('Content-Type: application/json');
echo json_encode($data);</nowiki>
-->
===Веб-интерфейс узла===