如何针对 Node 运行时编写 js 脚本

    • 本文测试所用设备系统为 Ubuntu18.04
    • node 版本为 8.5
    • 本文中基于 Hub 模块创建的服务名称为 服务。并且针对本文的测试案例中,对应的 localhub 服务、函数计算服务以及其他服务的配置统一如下:

    Baetyl 官方提供了 Node 运行时,可以加载用户所编写的 js 脚本。下文将针对 js 脚本的名称,执行函数名称,输入,输出参数等内容分别进行说明。

    js 脚本的名称可以参照 js 的通用命名规范,Baetyl 并未对此做特别限制。如果要应用某 js 脚本对某条 MQTT 消息做处理,则相应的函数运行时服务的配置如下:

    更多函数运行时服务配置请查看 函数运行时服务配置释义

    Baetyl 官方提供的 Node 运行时支持 2 个参数: event 和 context,下面将分别介绍其用法。

    • event:根据 MQTT 报文中的 Payload 传入不同参数
      • 若原始 Payload 为一个 Json 数据,则传入经过 json.loads(Payload) 处理后的数据;
      • 若原始 Payload 为字节流、字符串(非 Json),则传入原 Payload 数据。
    • context:MQTT 消息上下文
      • context.messageTopic // MQTT Topic
      • context.functionName // MQTT functionName
      • context.functionInvokeID //MQTT function invokeID
      • context.invokeid // 同上,用于兼容 提示:在云端 CFC 测试时,请注意不要直接使用 Baetyl 定义的上下文信息。推荐做法是先判断字段是否在 context 中存在,如果存在再读取。
    • 发送字典类数据:发送字典类数据