Не комментируя, почему это не работает, одно это не поможет вам против сценариев, которые используют addEventListener ('icecandidate').
adapter.js содержит вспомогательную функцию «wrapPeerConnectionEvent», которая обрабатывает оба варианта. С этим помощником это становится довольно простой задачей:
wrapPeerConnectionEvent(window, 'icecandidate', (e) => {
if (e.candidate) {
const parts = e.candidate.candidate.split(' ');
parts[4] = '127.0.0.1'; // replace the real ip with 127.0.0.1
e.candidate.candidate = parts.join(' ');
}
return e;
});
См. https://jsfiddle.net/krgz5qu1/ для полного примера. Обратите внимание, что вам, возможно, придется позаботиться о ip в поле relAddr кандидатов на сервер-рефлексив и ретрансляции.
Учитывая современное состояние искусства HDD, просто не стоит усилий по оптимизации текста ] механизмы хранения: Document (ID, Name)
и DocumentRevision (ID, DocumentID, Contents)
выполнят эту работу. ID ID
в DocumentRevision
также может служить номером ревизии в «хранилище». Если это не то поведение, которое вам нужно, назначьте отдельный VersionID
для каждой редакции документа.
Я разрабатываю вики-движок, а изменения страниц / статей хранятся в таблице базы данных. Каждая ревизия имеет последовательный номер ревизии, в то время как «текущая» ревизия помечается -1 (просто для того, чтобы избежать NULL).
Текст ревизии сохраняется как есть, а не как различий или что-то в этом роде.
Я думаю, что производительность не является проблемой, потому что вы вряд ли получите доступ к старым ревизиям очень часто.
Часто наиболее разумным способом отслеживания версий документа является отслеживание изменений, внесенных в него. Затем, если запрашивается определенная версия, ее можно восстановить из текущего документа и частичного набора изменений.
Так что, если у вас есть хороший метод описания типов изменений в документе (это будет зависеть в значительной степени от того, что документ и как он использовался), то непременно используйте базу данных для отслеживания изменений и, следовательно, версий.