嵌入到现有应用程序

可以将 Node-RED 嵌入到更大的应用程序中。典型场景是使用 Node-RED 生成数据流,以便在网页仪表板上显示 - 所有这些都来自同一个应用程序。

在应用程序的 package.json 中将 node-red 添加到模块依赖项中,以及您可能拥有的任何单个节点依赖项。

以下是将运行时嵌入到更大 Express 应用中的最小示例。

var http = require('http');
var express = require("express");
var RED = require("node-red");

// 创建一个 Express 应用
var app = express();

// 为从 'public' 提供的静态内容添加一个简单路由
app.use("/",express.static("public"));

// 创建一个服务器
var server = http.createServer(app);

// 创建设置对象 - 有关其他选项,请参见默认的 settings.js 文件
var settings = {
    httpAdminRoot:"/red",
    httpNodeRoot: "/api",
    userDir:"/home/nol/.nodered/",
    functionGlobalContext: { }    // 启用全局上下文
};

// 用服务器和设置初始化运行时
RED.init(server,settings);

// 从 /red 提供编辑器 UI
app.use(settings.httpAdminRoot,RED.httpAdmin);

// 从 /api 提供 http 节点 UI
app.use(settings.httpNodeRoot,RED.httpNode);

server.listen(8000);

// 启动运行时
RED.start();

使用这种方法时,不使用 Node-RED 中包含的 settings.js 文件。相反,设置作为参数传递给 RED.init 调用,如上所示。

此外,以下设置会被忽略,因为它们由您自行配置 Express 实例:

  • uiHost
  • uiPort
  • httpAdminAuth
  • httpNodeAuth
  • httpStatic
  • httpStaticAuth
  • https