Я ожидаю, что событие будет вызвано после предложения и ответа обмена между узлом A и узлом B, но это не так.
Это ожидание неверно. Весь смысл Trickle ICE состоит в том, чтобы ускорить переговоры, чтобы кандидаты-оференты немедленно преследовали предложение, и наоборот, кандидаты-ответчики гонялись за ответом.
Другими словами, то, что вы увидите на своем сигнальном канале одним способом:
offer candidate candidate candidate
... и то же самое происходит в другом направлении:
answer candidate candidate candidate
Думайте о них как об обновлениях отправленного описания. На самом деле, если вы должны были подождать несколько секунд, прежде чем отправить pc.localDescription
, тогда описание уже будет содержать всех кандидатов, и вам не нужно их обменивать. Trickle ICE - это оптимизация, поскольку время подключения обычно очень важно.