¿Cómo crear un servidor tracker de torrents por websocket?

Wizatek Seguir

Gamma
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
17 Dic 2020
Mensajes
456
Hola chicos.

La verdad es que ya no se ni donde colocarlo ya que en ningun lado saben de lo hablo.

Estoy intentando crear un servidor tracker de torrents por websocket y hay una libreria en nodejs muy buena que es https://github.com/webtorrent/bittorrent-tracker la cuestion es que tal vez este haciendo algo mal ya que ami no me funciona.

Este tracker usa exactamente lo mismo: https://tracker.files.fm:7073/stats, puedo conectarme y todo, pero el mio queda tal que asi:

1701290551907.png


Y no responde al websocket.

Funcional:

1701290631851.png


El mio:

1701290586665.png


El codigo que ejecuto es este:

Insertar CODE, HTML o PHP:
import { Server } from 'bittorrent-tracker'

const server = new Server({
  udp: true, // enable udp server? [default=true]
  http: true, // enable http server? [default=true]
  ws: true, // enable websocket server? [default=true]
  stats: true, // enable web-based statistics? [default=true]
  trustProxy: false // enable trusting x-forwarded-for header for remote IP [default=false]
})

// Internal http, udp, and websocket servers exposed as public properties.
server.http
server.udp
server.ws

server.on('error', function (err) {
  // fatal server error!
  console.log(err.message)
})

server.on('warning', function (err) {
  // client sent bad data. probably not a problem, just a buggy client.
  console.log(err.message)
})

server.on('listening', function () {
  // fired when all requested servers are listening

  // HTTP
  const httpAddr = server.http.address()
  const httpHost = httpAddr.address !== '::' ? httpAddr.address : 'localhost'
  const httpPort = httpAddr.port
  console.log(`HTTP tracker: http://${httpHost}:${httpPort}/announce`)

  // UDP
  const udpAddr = server.udp.address()
  const udpHost = udpAddr.address
  const udpPort = udpAddr.port
  console.log(`UDP tracker: udp://${udpHost}:${udpPort}`)

  // WS
  const wsAddr = server.ws.address()
  const wsHost = wsAddr.address !== '::' ? wsAddr.address : 'localhost'
  const wsPort = wsAddr.port
  console.log(`WebSocket tracker: ws://${wsHost}:${wsPort}`)

})


// start tracker server listening! Use 0 to listen on a random free port.
const port = 80
const hostname = "localhost"
server.listen(port, hostname, () => {
  // Do something on listening...
})

// listen for individual tracker messages from peers:

server.on('start', function (addr) {
  console.log('got start message from ' + addr)
})

server.on('complete', function (addr) {})
server.on('update', function (addr) {})
server.on('stop', function (addr) {})

// get info hashes for all torrents in the tracker server
Object.keys(server.torrents)

Alguien sabe algo?
 

kj2

Kappa
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
Desde
1 Abr 2011
Mensajes
2.579
Yo he usado dicho script en unos cuantos proyectos, de hecho hice en su momento un PR a ese proyecto para añadirle la opción de usar WSS para poder usarlo en sitios con https (luego hicieron mal el un merge y se perdieron mis cambios xD).

PD: Por experiencia te digo que la librerías no es muy buena, no por la calidad del código (aunque no te fíes si hacen mal los merges xD), sino por algo usual en javascript: En cuanto le vas poniendo más peers el consumo aumenta en función exponencial.

kj
 

Wizatek

Gamma
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
17 Dic 2020
Mensajes
456
Yo he usado dicho script en unos cuantos proyectos, de hecho hice en su momento un PR a ese proyecto para añadirle la opción de usar WSS para poder usarlo en sitios con https (luego hicieron mal el un merge y se perdieron mis cambios xD).

PD: Por experiencia te digo que la librerías no es muy buena, no por la calidad del código (aunque no te fíes si hacen mal los merges xD), sino por algo usual en javascript: En cuanto le vas poniendo más peers el consumo aumenta en función exponencial.

kj
¿Y cómo pudiste integrar el servidor y el cliente para que ambos funcionen sin que se canibalicen?

Es decir, el server.js funciona muy bien, solo que no tendrás los peers de los demás torrents ya que no usaron tu tracker para subir el video. Por lo tanto, necesitas el cliente.js para extraer la información de otros trackers.

¿Qué hiciste en ese caso?
 

OnyxDeveloper

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Oct 2023
Mensajes
82
¿Y cómo pudiste integrar el servidor y el cliente para que ambos funcionen sin que se canibalicen?

Es decir, el server.js funciona muy bien, solo que no tendrás los peers de los demás torrents ya que no usaron tu tracker para subir el video. Por lo tanto, necesitas el cliente.js para extraer la información de otros trackers.

¿Qué hiciste en ese caso?

de que sirve eso de Tracker? no se mucho del tema

yo tengo es un nodo que esta conectado a muchas paginas web de descarga por torrent y puedo buscar peliculas, juegos apk entre muchas otras cosas.
 

Wizatek

Gamma
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
17 Dic 2020
Mensajes
456
de que sirve eso de Tracker? no se mucho del tema

yo tengo es un nodo que esta conectado a muchas paginas web de descarga por torrent y puedo buscar peliculas, juegos apk entre muchas otras cosas.
Como su nombre indica, un rastreador, rastrea a usuarios (peers) que tienen fragmentos de un archivo específico y al conectarnos a ellos podemos descargarlos y juntar las partes.

Lo que yo estoy haciendo es un stream de videos torrent, de hecho ya lo tengo hecho para desktop y app, lo mismo que Popcorn time, pero yo lo quiero para web y sin consumir ancho de banda para mi servidor.
 

OnyxDeveloper

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Oct 2023
Mensajes
82
Como su nombre indica, un rastreador, rastrea a usuarios (peers) que tienen fragmentos de un archivo específico y al conectarnos a ellos podemos descargarlos y juntar las partes.

Lo que yo estoy haciendo es un stream de videos torrent, de hecho ya lo tengo hecho para desktop y app, lo mismo que Popcorn time, pero yo lo quiero para web y sin consumir ancho de banda para mi servidor.

oh no sabia eso, yo se mucho Nodejs.

🤔 en resumen por ejemplo, uno indica el archivo que es, y rastreara los usuario que tienen copia del archivo y asi hacer un video stream de ese torrent?
 

Wizatek

Gamma
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
17 Dic 2020
Mensajes
456
oh no sabia eso, yo se mucho Nodejs.

🤔 en resumen por ejemplo, uno indica el archivo que es, y rastreara los usuario que tienen copia del archivo y asi hacer un video stream de ese torrent?
Si, mas o menos :D
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba