Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

324
Views
WebRTC en hosting compartido (SSH) sin nodejs, preferiblemente en php

Así que he estado buscando una manera de integrar webRTC en un sitio que estoy creando, pero quiero hacerlo en un alojamiento compartido. Encontré este repositorio en GitHub por nielsbaloe y ha sido de gran ayuda para obtener una conexión básica.

Este es el código que creo que es responsable de agregar el par: (index.html en el repositorio, línea)

 function icecandidate(localStream) { pc = new RTCPeerConnection(configuration); pc.onicecandidate = function (event) { if (event.candidate) { publish('client-candidate', event.candidate); } }; try { pc.addStream(localStream); }catch(e){ var tracks = localStream.getTracks(); for(var i=0;i<tracks.length;i++){ pc.addTrack(tracks[i], localStream); } } pc.ontrack = function (e) { document.getElementById('remoteVideo').style.display="block"; document.getElementById('localVideo').style.display="none"; remoteVideo.srcObject = e.streams[0]; }; }

Ahora, la lucha a la que me enfrento es agregar la funcionalidad de la sala, y tal vez la capacidad de tener más de dos pares concurrentes presentes al mismo tiempo. Hice algunos experimentos, pero en vano. Sé que para la funcionalidad de la sala, tengo que jugar en el php, así que al menos me gustaría descubrir cómo hacer posible más de 1 par.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Hasta donde yo sé, no hay forma de reutilizar la misma RTCPeerConnection para múltiples pares, por lo que tendrá que hacer lo mismo que 1 a 1 pero entre cada par de un grupo.

En cuanto a la señalización, es bastante simple, es más o menos así:

Cliente A -> [Oferta] -> Servidor -> [Oferta] -> Cliente B -> [Respuesta] -> Servidor -> [Respuesta] -> Cliente A

Una mejor explicación en MDN

No hay necesariamente una necesidad de NodeJS o WebSocket. La razón por la que la mayoría de la gente lo elige es porque el último eslabón de esta cadena (Servidor -> Cliente A) requiere una conexión iniciada por el servidor. Pero eso se puede sustituir con técnicas alternativas como el sondeo (largo). O, en el caso de PHP, puede usar implementaciones de websocket como Bloatless o Aerys

Para implementar la funcionalidad de la sala, deberá implementar lo siguiente:

Variante A (mediante sondeo):

  • Un punto final para lanzar ofertas, por ejemplo, POST /rooms/{id}

  • Un punto final para buscar regularmente nuevas ofertas, por ejemplo, GET /rooms/{id}

Variante B (con websockets)

  • Cree salas de transmisión, por ejemplo, mediante la creación dinámica de puntos finales HTTP e instancias de servidor websocket. O al tener una sola instancia de websocket pero enviar cualquier habitación a la que pretenda unirse justo dentro después de establecer una conexión. A partir de ahí, solo es cuestión de enviar ofertas y respuestas correctas a los usuarios correctos.

En ambos casos, es posible que desee crear varias ofertas por adelantado para agruparlas desde el servidor o crear dinámicamente otras nuevas, pero, lo más importante, asegúrese de no conectar a los mismos pares dos veces, de lo contrario terminará con un bucle. Para evitarlo, solo proporcione a cada usuario una cadena generada aleatoriamente para identificarse y enviarla entre las ofertas.

Hay soluciones llave en mano disponibles si no quiere seguir esta ruta, pero tenga cuidado y verifique si puede usar sus propios servidores TURN con ellas. Una tendencia común que he notado es que hay muchos proveedores de soluciones WebRTC que lo atraen con su simplicidad pero luego lo bloquean con sus propios servidores TURN por los que es posible que tenga que pagar una factura bastante alta más adelante.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!