我正在尝试弄清楚如何将 node.js 嵌入到 Firefox 扩展中,这样我就可以从浏览器中运行持久服务器进程(特别是 PeerServer ),只要用户启用了扩展。我唯一能在网上找到的是 this guide ...但我无法使这些说明起作用,需要找到更多资源。
1) 除了我上面链接到的关于在 Firefox 扩展中嵌入 node.js 的文章之外,还有其他资源吗?有代码示例吗?
2) 是否有某些原因导致无法从 Firefox 扩展中运行诸如 PeerServer 之类的持久服务器进程?扩展是否存在某种限制,使我无法做到这一点?
最佳答案
您可以只将可执行文件放在扩展的文件夹中,并在扩展中使用 JS 代码启动该可执行文件。在您链接的资源或 here at MDN 中描述了运行外部可执行文件.
从 MDN 复制的示例:
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsIFile);
file.initWithPath("myapp.exe");
var process = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["argument1", "argument2"];
process.run(false, args, args.length);
需要更多的逻辑来找到用户配置文件的绝对路径,以推导应用程序的启动路径,但这是可行的。
现在,如果您想与扩展中的 Node 交互,您可以使用 HTTP 请求作为通信方式。
虽然 Firefox 本身的核心是 JS 引擎,但在 Firefox 中嵌入 Node 听起来有点奇怪。一种更优雅的方法是尝试让 PeerJS 直接在 Firefox 插件上下文中运行,而无需 Node 。也许更复杂,但应该是可能的。例如,参见此插件“Browser Server”。
关于javascript - 在 Firefox 扩展中嵌入 node.js 并在浏览器中运行服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291617/