【问题标题】:Ideas needed. Javascript+XPCOM+C++ add-on需要的想法。 Javascript+XPCOM+C++ 插件
【发布时间】:2013-07-30 18:57:36
【问题描述】:

因此,Firefox 中有一个 WebRTC,并且有一个方便的类可以使 RTC 通信成为可能,称为 RTCPeerConnection,可以从 JavaScript 应用程序实例化和使用。你可以在[1] 上找到一些不错的例子。 这是我的自定义传输(如果您有兴趣 - [2])想将它用于 RTC 通信。简而言之,我需要用我的自定义传输“替换”WebRTC 引擎的传输层,同时为用户提供相同的类似 RTCPeerConnection 的 JavaScript 接口。最好不要看起来像 Firefox 的自定义构建(没有补丁)。 所以我想出了扩展的想法,它将用 C++ 编写(因为它需要与 WebRTC 库和我的自定义传输库链接)并且以某种方式将其接口暴露给 Javascript。而且我发现 XPCOM 正如我所想的那样,它可以为我提供这个。 因此,我开始与有关该主题的过时且稀疏的信息进行斗争,经过 3 天的努力,最终以构建的附加组件告终。不幸的是,由于 Javascript 的“Components.classes is undefined”错误,我无法从 Javascript 访问它。而且似乎根本没有办法访问它。还是我错了?

这里是 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 插件可见,上面的代码我可以在控制台中执行,而 empty page 在 Firefox 中打开。

鉴于此,我想请教 Firefox 专家关于我可以采取哪些方法来实现我的想法。 提前谢谢你

1https://apprtc.appspot.com/

2http://named-data.net

【问题讨论】:

  • 您是否使用 addon-sdk 来构建您的扩展?
  • 不,因为我认为这还不够——我不需要 GUI,我需要链接 C++ 代码。或者我可以使用它吗?
  • 我不是说要使用它。当人们不导入“chrome”时,通常会在 addon-sdk 上发生“Components.classes”错误。这就是我问的原因。我不确定我能不能帮到其他人,抱歉
  • @peetonn 请显示您尝试过的代码。您提到的错误与 XPCom 完全无关。这很可能与您如何组织 JavaScript 端代码有关。请出示您的代码!至于方法,如果您需要运行特定于平台的库,您可以选择xpcomjs-ctypes。 ctypes 是一个更简单的界面,但没有人能在不看代码的情况下帮助您。
  • @peetonn:您的插件端 JavaScript 代码将可以访问 Components.*。在我的自我回答问题中查看bootstrap(XUL-less)示例:stackoverflow.com/questions/14055646/…

标签: javascript c++ firefox firefox-addon xpcom


【解决方案1】:

最后,我找到了一种可能的解决方案,并在我的post中描述了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多