运行与生命周期
说明后台的启动、就绪、停止和异常退出。
Documentation content is currently available in Simplified Chinese.
每个启用的插件拥有一个独立的 Node.js 后台进程。飞块提供运行时和 SDK 路径,插件入口负责加载 SDK 并调用 definePlugin()。
#启动
SDK 注册处理函数后,调用 onStart(context)。这个函数完成后,SDK 发送就绪信息,飞块核对实际注册的动作、服务和超级块处理函数。
初始化失败时,后台报告错误,插件不会进入运行状态。因此,把必要的连接和初始数据加载放在 onStart() 中,让失败直接暴露在启动阶段。定时更新可以在初始化成功后启动定时器。
let timer;
definePlugin({
async onStart(context) {
await refresh(context);
timer = setInterval(() => refresh(context).catch(console.error), 5000);
},
onStop() {
clearInterval(timer);
}
});这里的 refresh() 由插件实现,用于获取并发布数据。
#停止
用户禁用插件或飞块退出时,宿主请求后台停止,SDK 调用 onStop()。在这里关闭连接、清理定时器和完成必要的资源释放。
#异常退出
后台崩溃或失去响应时,飞块把插件标记为错误,结束正在等待的请求,并清理插件发布的状态。用户重新启用后,会启动新的进程,重新运行 onStart()。
需要跨重启保存业务数据时,插件自行保存业务数据,并在下次启动时恢复和重新发布。进程内变量随着进程结束而丢失。