如何在node app中embedded多个node-red的实例

此处的节点红色文档提供了如何在nodejs应用程序中embedded单个节点红色应用程序的信息 – http://nodered.org/docs/embedding

我们希望我们网站的用户在不同的端口上拥有自己的节点红色,以进行一些自定义编程。 是否有可能将多个节点红色应用程序embedded到nodejs应用程序中?

我试着用不同的端口改变每个调用的设置来重复embedded的相同步骤,但是只创build一次。 第一次,基于设置创build节点红色实例。 下次我们打电话,我们得到使用的端口。 我认为这与节点需要做caching和所有…这个问题的任何解决方法?

不,目前Node-RED没有多用户function,也没有办法在一个进程中实例化多个实例。

您必须为每个用户运行应用程序的单独实例。 看看像FRED这样的例子。 这将运行各个实例并对其进行代理,以使集成看起来像全部在同一个端口/域上

如果您有兴趣,我创build了一个允许此function的节点红色项目的分支。

这是你将如何启动它:

var http = require('http'); var express = require("express"); var RED = require("node-red")(); var RED2 = require("node-red")(); // Create an Express app var app = express(); // Add a simple route for static content served from 'public' app.use("/",express.static("public")); // Create a server var server = http.createServer(app); // Create the settings object - see default settings.js file for other options var settings = { httpAdminRoot:"/red1", httpNodeRoot: "/api", userDir:"./hhh", functionGlobalContext: { } // enables global context }; // Initialise the runtime with a server and settings RED.init(server,settings); console.log(RED2.settings === RED.settings, 888, RED2.settings.userSettings); // Serve the editor UI from /red app.use(settings.httpAdminRoot,RED.httpAdmin); // Serve the http nodes UI from /api app.use(settings.httpNodeRoot,RED.httpNode); server.listen(8005); // Start the runtime RED.start(); var app2 = express(); app2.use("/",express.static("public")); var server2 = http.createServer(app2); var settings2 = { httpAdminRoot:"/red2", httpNodeRoot: "/api", userDir:"./hhhh", functionGlobalContext: { } }; RED2.init(server2,settings2); app2.use(settings2.httpAdminRoot,RED2.httpAdmin); app2.use(settings2.httpNodeRoot,RED2.httpNode); RED2.start(); server2.listen(8006); console.log(RED.settings.httpAdminRoot); console.log(RED2.settings.httpAdminRoot); console.log(RED2.settings === RED.settings); 

也在同一个港口工作。 但确保使用不同的path是如此。

https://github.com/aryeharmon/node-red