javascript - 在 Firefox 扩展中嵌入 node.js 并在浏览器中运行服务器

标签 javascript node.js firefox firefox-addon

我正在尝试弄清楚如何将 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/

相关文章:

javascript - 检索node.js中的查询字符串参数

javascript - 通过 Promise 对异步操作进行排队

javascript - Snap.load() 一个 svg img 并为其子节点的填充颜色设置动画

javascript - 如何将数据从 json api 传递到 javascript var

node.js - 无法永远运行 SailsJS 应用程序

node.js - 打包 Node webkit应用程序

javascript - 如果我使用缓存 list ,为什么 Firefox 会搞乱页面加载?

java - 浏览器渲染和流式传输

java - 将 JQuery 缓存到 Web 浏览器中

Firefox 关于 :config preferences in SWT Browser