Не удалось выполнить 'setRemoteDescription' на 'RTCPeerConnection' на webrtc

Так что я следую учебнику TauhidCodes на youtube здесь: https://www.youtube.com/watch?v=MBOlZMLaQ8g

Это немного отличается, потому что я использую обратные урлы для разных названий комнат.

Я реализую систему видеозвонков, которая позволяет более чем 3 пользователям и выше присоединиться, введя соответствующий url, например https://127.0.0.1:8000/video/test/. Я открываю 2 вкладки в одном и том же окне и нажимаю кнопку начать звонок для обеих, и они обе выдают ошибку.

Ошибка

test/:1 Uncaught (in promise) InvalidStateError: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: stable
<!DOCTYPE html>
<html>

<head>
  <style>
    button {
      border: 0;
      background-color: orange;
      padding: 10px;
      color: white;
      border-radius: 7px;
    }

    video {
      border-radius: 15px;
    }

    .videoContainer {
      display: flex;
      margin: 20px;
      width: 640px;
    }

    .videoContainer h2 {
      color: white;
      position: relative;
      bottom: -380px;
      left: -350px;
      width: max-content;
    }

    #meet {
      display: flex;
    }

    #recordButton.recording {
      background-color: red;
    }

    #downloadButton {
      background-color: #4caf50;
    }

    button:disabled {
      background-color: #cccccc;
      cursor: not-allowed;
    }
  </style>
  <title>A Free Bird Video Call</title>
  <script src="https://meet.jit.si/external_api.js"></script>
</head>
{% load static %}
<body>
  <div id="meet">
    <button id="videoOff" onclick="toggleVideoOff()" disabled>Video Off</button>
    <button id="audioMute" onclick="toggleAudioMute()" disabled>Mute Audio</button>
    <div id="remote-videos">
      <div id="videoContainer">
        <video id="localVideo" autoplay playsinline></video>
        <h2>{{ request.user.full_name }}</h2>
      </div>
    </div>
    <!-- <div class="videoContainer">
      <video id="remoteVideo" autoplay playsinline></video>
      <h2></h2>
    </div> -->
  </div>

  <div>
    <button onclick="startCall()">Start Call</button>
    <button id="recordButton" onclick="toggleRecording()" disabled>
      Start Recording
    </button>
    <button id="downloadButton" onclick="downloadRecording()" disabled>
      Download Recording
    </button>
    <button id="shareScreenButton" onclick="shareScreen()">Share Screen</button>
  </div>
  <div id="chat">
    <h3>Chat</h3>
    <div id="messages">
      <ul id="messageList"></ul>
      <input type="text" id="messageInput" placeholder="Type your message here...">
      <button id="sendMessageButton">Send</button>
    </div>
  </div>
  <input type="hidden" id="user_id" value="{{ request.user.id }}">
<script src="{% static 'js/video_call.js' %}" type="text/javascript" data-room-name="{{ room_name }}"></script>
</body>

</html>

Я попытался посмотреть код, но там не было ничего особенного. Я не думаю, что в нем есть ошибки... Я ожидаю, что он покажет два видеопотока, один локальный и один удаленный, используя две вкладки с открытой комнатой видеовызова. Раньше он показывал, что есть 3 видеопотока, когда я нажимал кнопку начала вызова, но только на одной вкладке. На другой вкладке возникала та же ошибка, о которой я говорил. Я пытаюсь заставить это работать, потому что это некоммерческая организация и я не хочу тратить лишние деньги.

На самом деле я пропустил инструкцию return в моем файле consumers.py. Теперь работает.

Вернуться на верх