如何在 Node 应用程序中嵌入 Node-Red 的多个实例

2024-04-18

Node-red 文档此处提供了有关如何在 Nodejs 应用程序中嵌入单个 Node-Red 应用程序的信息 -http://nodered.org/docs/embedding http://nodered.org/docs/embedding

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

我尝试通过更改具有不同端口的每个调用的设置来重复相同的嵌入步骤,但仅创建一次。第一次,根据设置创建节点红色实例。下次我们调用时,我们会得到正在使用的端口。我认为这与节点需要进行缓存有关...此问题有任何解决方法吗?


如果您有兴趣,我创建了一个允许此功能的 Node-Red 项目的分支。

这就是你启动它的方式:

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);

而且,在同一端口上工作。但请确保使用不同的路径是这样。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node 应用程序中嵌入 Node-Red 的多个实例 的相关文章

随机推荐