2023-07-21-nodeRed-源码分析10-从node.send到'input'回调

1. 功能概述#

Node-RED 中消息的流转是通过连接不同的节点来完成的。当一个节点接收到消息时,它会将其处理后发送到下一个节点。下一个节点再对该消息进行处理,最终将结果传递到下一个节点,以此类推,直至消息到达最终节点完成处理。

在 Node-RED 中,消息可由源节点(如 mqtt input node、http input node)生成,也可由其他节点产生(如 function node、template node 等)。对于每一个消息,Node-RED 需要确定它应该发送到哪个节点。这个过程是基于节点之间的连接来进行的。

连接可以直接从一个节点到另一个节点,也可以有中间节点传输。在流程执行过程中,Node-RED 会根据流程图的连线信息,按照一定的顺序发送消息,以达到预期的流程目标。

2. 涉及文件#

阅读更多

2023-07-12-nodeRed-源码分析2-程序核心lib/red.js分析

1. 功能概述#

  • 以库的形式,提供 NodeRed 的所有核心功能
  • 提供了三个对外接口:init、start、stop
    • init:初始化 runtime(一个全局运行时对象)、api(提供 restful 接口) ,完成参数的传递及绑定
    • start:启动 runtime 和 api
    • stop: 停止 runtime 和 api
  • 导出了以下变量, log、util、nodes、events、hooks、settings、version、httpAdmin、httpNode、httpServer、runtime、auth

2. 所依赖的三方库#

  • path
  • semver

3. 文件域变量#

阅读更多

2023-07-12-nodeRed-源码分析3-程序流引擎入口分析

1. 功能概述#

  • 以库的形式,提供 Nodered 的核心流引擎功能。
  • 包含 api、flows、library、nodes、storage 模块
  • 提供了三个对外接口:init、start、stop
    • init:初始化 settings 对象,nodeApp ,adminApp,adminApi,redNodes,externalAPI(api)
    • start :初始化 i18n、storage、library,启动 settings,启动 redNodes, 加载上下文,加载流,启动流
    • stop: 停止流、关闭上下文

2. 所依赖的三方库#

  • express
  • path
  • fs
  • os

3. 文件域变量#

阅读更多

2023-07-10-nodeRed-源码分析1-程序入口red.js分析

1. 功能概述#

  • 加载所需的应用程序、库文件和参数文件,以便它们可以在运行时被调用
  • 解析命令参数,使用不同的选项和功能
  • 根据用户或系统的设置来配置自身,例如文件路径、日志级别等。
  • 记录运行时发生的错误和事件,以便更容易诊断和解决问题
  • 配置并创建 webserver 对象,并将请求委托给 express 实例
  • 用 server 对象和配置参数初始化 RED 库
  • 启动 RED 核心模块,并启动 webserver
  • 提供退出功能,确保程序正确关闭并释资源、保存数据。

2. 所依赖的三方库#

  • http
  • https
  • util
  • express
  • crypto
  • bcrypt
  • nopt

3. 文件域变量#

阅读更多

2022-06-02-Nestjs中利用nestjs-config模块实现多运行环境配置

1. 问题#

在做 Nestjs 开发时,会涉及开发环境、生产环境等切换,可以通过nestjs-config进行配置文件统一管理,通过向启动命令传参的方式运行不同环境下的 Nest 应用。

2. 解决思路 1#

2.1. 使用 nest-cli 搭建脚手架#

阅读更多

2022-05-07-Nodejs中TCP在断网的超时处理

1. 问题#

在做 NodeJS 开发的过程中,碰到一个棘手的问题:已建立好的 TCP 连接,在网络异常情况下(拔网线),客户端无法及时的响应(close 或 error),这会影响到业务应用的。

查了不少资料,从 Linux 网络模型到 Nodejs 手册再到内核,一步步走来,算是找到了解决问题的方法,这里总结一下。

2. 解决思路#

阅读更多

2022-03-28-Git detached head 分析

博客迁移:不恰饭的小站
https://blog.buqia.fun/2022/03/28/2022-03-28-Git%20detach%20head%20%E5%88%86%E6%9E%90/

1. Git detached head 的含义#

detached head 是一种 HEAD 指针指向了某一个具体的 commit id,而不是分支名称(master、…)的情况。

2. Git detached head 的产生、操作与消亡#

阅读更多

2022-03-25-带着问题看源码8-NodeRed中的Library模块

1. 此模块的意义#

NodeRed Library 模块是一组前后端配合使用的模块。它可将运行数据序列化到磁盘,实现数据共享。

2. NodeRed 此模块功能#

当前 NodeRed 提供了两个默认的 Library 模块:example 和 local,分别实现了例子文件的读写和流程导入导出。前端提供操作界面,通过 NodeRed 提供的 Restful 接口调用后端,后端根据参数实现功能。

阅读更多

2022-03-21-带着问题看源码7-NodeRed中的context模块

1. 此模块的意义#

NodeRed context 模块是运行期做数据保存及共享的一种机制。当节点间有相同内容时,可以考虑将相同的内容放入 context 以实现共享,既减少了空间,也有利于修改。

2. NodeRed 此模块功能#

context 有三类:global、flow、node,其中 global 是随着 context 模块初始化时创建,全局唯一;flow context 以 flowId 为标识,为所有具有相同 flowId 的节点做记录;node context 以 flow:id 为标识。三者作用域不相同:全局、流、节点,不同流 context 数据不共享,不同节点 context 数据不共享。

阅读更多