Идеи нужны. Дополнение Javascript+XPCOM+C++
Итак, внутри Firefox есть WebRTC, и есть удобный класс для обеспечения возможности RTC-коммуникации, называемый RTCPeerConnection, который может быть создан и использован из приложения JavaScript. Вы можете найти достойный пример этого на [1]. И вот я с моим собственным транспортом (если вам интересно - [2]) хотел бы использовать его для связи по RTC. Вкратце, мне нужно "заменить" транспортный уровень движка WebRTC на мой собственный транспорт, предоставив пользователю тот же RTCPeerConnection-подобный интерфейс JavaScript. И желательно, это не должно выглядеть как пользовательская сборка Firefox (без патчей). Поэтому я предложил идею расширения, которое будет написано на C++ (поскольку оно должно быть связано с библиотекой WebRTC и моей пользовательской транспортной библиотекой) и каким-то образом предоставит свой интерфейс Javascript. И я нашел XPCOM, который, как я думал, может дать мне это. Поэтому я начал бороться с устаревшей и скудной информацией по этой теме, и после 3-х дней борьбы наконец-то закончил со встроенным дополнением. К сожалению, я не могу получить к нему доступ из Javascript из-за ошибки Javascript "Components.classes is undefined". И кажется, что нет никакого способа получить к нему доступ вообще. Или я в этом не прав?
Вот Javascript:
function check()
{
console.debug("checking...");
const {Cc,Ci,Cu} = require("chrome");
var rtc = Components.classes["@named-data.net/ndnrtc;1"].createInstance();
rtc = rtc.QueryInterface(Ci.ndINrtc);
console.debug("rtc: "+rtc);
}
Мой компонент виден с помощью дополнения XPCOM Viewer и приведенного выше кода, который я могу выполнить в консоли, пока в Firefox открыта пустая страница.
Учитывая все это, я хотел бы спросить экспертов Firefox о возможных подходах, которые я могу использовать для реализации своей идеи. заранее спасибо
1 ответ
Наконец, я нашел одно возможное решение для этого и опишу его в своем посте.