Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
First stream freezes after seccond connection opens?

I'm constructing an application that allows multiple devices to stream their webcam, through the browser, to another device. Each streaming device takes a DataURL image from the webcam and sends it over WebSocket to a server, which will then distribute the array of images to viewers. The viewer will parse the message and display each image on its own individual <canvas>.

It works fine when one user is streaming, but when a second device begins to stream, the first one freezes. It appears the last image in the array is the only one to actually be rendered.

I've been reviewing this code for several hours and can't understand what I'm missing here.

var socket = new WebSocket("wss://my_server:8443");


socket.onmessage = function(msg) {
  //parse the incoming message into a usable array
  msg = JSON.parse(msg.data);

  var div = document.getElementById("streams");
  
  //for every incoming stream
  for (var i in msg) {
    //create a new Image, then render it onto a canvas element.
    var img = new Image();
    img.onload = function() {
      //if there isn't a canvas element to render it onto already, create one (for when a stream is created)
      if (document.getElementById(i) == null) {
        var c = document.createElement("canvas");
        c.width = img.width;
        c.height = img.height;
        c.setAttribute("id", i);
        div.appendChild(c);
      }
      //draw the image onto the canvas
      var canvas = document.getElementById(i);
      var ctx = canvas.getContext("2d");
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      ctx.drawImage(img, 0, 0);
    }
    //set the Data URL as the image's SRC
    img.src = msg[i];
  }
}

I originally just added <img> elements to the <div>, but it ended up taking too long to load, creating short flashes in between each frame.

What's wrong with my code? It seems to freeze all active streams except for the one most recently started (last in the array).

about 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda