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

197
Views
el evento ondatachannel nunca se activa - WebRTC

Lado de la oferta

 let pc = new RTCPeerConnection({...}); let dc = pc.createDataChannel("msg"); dc.onopen = function (e) { console.log("Channel Opened", e); }; dc.onclose = function (e) { console.log("Channel closed"); }; let offer = await pc.createOffer(); await pc.setLocalDescription(offer); socket.emit("offer", JSON.stringify(pc.localDescription)); socket.on("answer", function (sdp) { pc.setRemoteDescription(JSON.parse(sdp)); });

Lado de respuesta

 let pc = new RTCPeerConnection({...}); pc.ondatachannel = function (e) { console.log(e); }; socket.on("offer", async function (sdp) { await pc.setRemoteDescription(JSON.parse(sdp)); let ans = await pc.createAnswer(); pc.setLocalDescription(ans); socket.emit("answer", JSON.stringify(ans)); });

Idealmente, se debe disparar el evento ondatachannel .

¿Alguien puede decirme por qué esto no funciona?

Gracias por adelantado :)

Código fuente

https://github.com/ats1999/RTSP-webRTC/tree/main/webRTC/data-channel

Haz npm i para instalar las dependencias del lado del servidor.

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

0

Nunca intercambia candidatos ICE (es decir, la dirección y el puerto a utilizar) y eso es necesario para establecer una conexión (que a su vez es necesaria para abrir un canal de datos). Tiene un controlador onicecandidate:

 pc.onicecandidate = function (e) { if (e.candidate) try { // pc.addIceCandidate(e.candidate); } catch (e) {} log("onicecandidate"); };

pero el intento (comentado) de agregar el candidato a la conexión local es incorrecto. Lo que debe hacer es señalarlo al otro lado a través de algo como

 socket.emit("candidate", JSON.stringify(e.candidate));

y luego agréguelo en un controlador para el evento candidate a lo largo de estas líneas:

 socket.on("candidate", async function (candidate) { await pc.addIceCandidate(JSON.parse(candidate)); });
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!