Почему я должен открывать канал данных перед отправкой предложения однорангового соединения?

Я кодирую простое приложение для чата и хочу добавить общий холст для рисования в свое приложение, которое использует канал данных для отправки точек холста между ними. Но это необязательная спецификация, поэтому я не хочу открывать канал данных каждый раз, когда открываю чат. Если я открываю канал данных после установления однорангового соединения (после предложения), я не могу отправлять данные по каналу данных. В противном случае я могу отправить (я получил этот пункт отсюда: https://stackoverflow.com/a/35141500/5663292) . Так почему же я должен открывать канал данных перед предложением однорангового подключения?


person Sercan özen    schedule 10.08.2016    source источник


Ответы (1)


Предложение/ответ SDP — это то, что определяет, как именно ваши коллеги хотят общаться. Предложение включает фактический способ подключения (IP/порт/реле TURN) и какие потоки, кодеки и каналы вы хотите использовать. Ответ сужает это/подтверждает, что может принять другой узел.

Если вы хотите что-то добавить к общению, например дополнительный медиапоток или канал данных, вам нужно сообщить об этом другому узлу, иначе он ничего не ожидает/не может обработать .

Поток всегда:

  1. подготовьте все, что вы хотите отправить удаленному узлу на вашем локальном RTCPeerConnection
  2. создать локальное описание
  3. отправить его удаленному узлу
  4. дождитесь ответа удаленного узла
  5. включить ответ пульта (setRemoteDescription)

Только тогда оба партнера находятся на одной странице и могут действительно разговаривать друг с другом. Повторяйте эту процедуру всякий раз, когда это необходимо, то есть всякий раз, когда вы существенно меняете что-либо в том, что отправляете.

person deceze♦    schedule 10.08.2016