跳到主要内容

节点和 Blocklet 管理

本节为用于管理和检索有关 Blocklet Server 节点及其运行的 Blocklet 信息的 GraphQL 查询提供了详细参考。这些查询允许您监控状态、获取配置和访问生命周期信息。

对于修改状态的操作,例如安装或启动 Blocklet,请参阅 变更 > 节点和 Blocklet 管理 文档。

节点信息查询

这些查询提供有关 Blocklet Server 实例本身的信息。

getNodeInfo

获取有关当前 Blocklet Server 节点的全面状态信息,包括其 DID、版本、状态和配置。

返回

  • response Promise<BlockletServerClient.ResponseGetNodeInfo> — 一个解析为包含节点状态信息的对象的 Promise。

示例

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchNodeInfo() {
  try {
    const response = await client.getNodeInfo();
    console.log('Node Info:', response.info);
  } catch (error) {
    console.error('Error fetching node info:', error);
  }
}

fetchNodeInfo();

响应示例

json
{
  "code": "ok",
  "info": {
    "did": "z1v7.....",
    "pk": "...",
    "version": "1.7.0",
    "name": "My ABT Node",
    "description": "This is my personal Blocklet Server.",
    "initialized": true,
    "autoUpgrade": true
    // ... other NodeState properties
  }
}

getNodeEnv

检索 Blocklet Server 的环境详情,例如操作系统、IP 地址、Docker 状态和可用的 Blocklet 引擎。

返回

  • response Promise<BlockletServerClient.ResponseGetNodeEnv> — 一个解析为包含节点环境信息的对象的 Promise。

示例

javascript
async function fetchNodeEnv() {
  try {
    const response = await client.getNodeEnv();
    console.log('Node Environment:', response.info);
  } catch (error) {
    console.error('Error fetching node environment:', error);
  }
}

fetchNodeEnv();

响应示例

json
{
  "code": "ok",
  "info": {
    "ip": {
      "externalV4": "192.0.2.1"
    },
    "os": "linux",
    "docker": true,
    "blockletEngines": [
      {
        "name": "node",
        "version": "18.17.0",
        "available": true
      }
    ]
    // ... other NodeEnvInfo properties
  }
}

checkNodeVersion

检查是否有可用于升级的 Blocklet Server 软件的新版本。

返回

  • response Promise<BlockletServerClient.ResponseCheckNodeVersion> — 一个解析为包含最新可用版本(如果有)的对象的 Promise。

示例

javascript
async function checkForUpdates() {
  try {
    const response = await client.checkNodeVersion();
    console.log('Latest available version:', response.version);
  } catch (error) {
    console.error('Error checking for updates:', error);
  }
}

checkForUpdates();

响应示例

json
{
  "code": "ok",
  "version": "1.7.1"
}

getNodeRuntimeHistory

获取节点在指定时间段内的历史运行时数据,包括 CPU 和内存使用情况。

参数

  • input object (required)
    • hours number (required) — 要检索历史记录的过去小时数。

返回

  • response Promise<BlockletServerClient.ResponseNodeRuntimeHistory> — 一个解析为包含历史数据点数组的 Promise。

示例

javascript
async function fetchNodeHistory() {
  try {
    const response = await client.getNodeRuntimeHistory({ input: { hours: 24 } });
    console.log('Node runtime history for the last 24 hours:', response.history);
  } catch (error) {
    console.error('Error fetching node runtime history:', error);
  }
}

fetchNodeHistory();

响应示例

json
{
  "code": "ok",
  "history": [
    {
      "date": 1672531200000,
      "cpu": 15.5,
      "mem": 2048.5
    }
    // ... other NodeHistoryItem data points
  ]
}

getDelegationState

检索节点的委托状态。

返回

  • response Promise<BlockletServerClient.ResponseDelegationState> — 一个解析为包含委托状态的对象的 Promise。

示例

javascript
async function fetchDelegationState() {
  try {
    const response = await client.getDelegationState();
    console.log('Delegation State:', response.state);
  } catch (error) {
    console.error('Error fetching delegation state:', error);
  }
}

fetchDelegationState();

响应示例

json
{
  "code": "ok",
  "state": {
    "delegated": true
  }
}

resetNodeStatus

重置节点的状态。

返回

  • response Promise<BlockletServerClient.ResponseGetNodeInfo> — 一个解析为包含节点更新后状态信息的对象的 Promise。

示例

javascript
async function resetStatus() {
  try {
    const response = await client.resetNodeStatus();
    console.log('Node status reset:', response.info);
  } catch (error) {
    console.error('Error resetting node status:', error);
  }
}

resetStatus();

响应示例

json
{
  "code": "ok",
  "info": {
    "did": "z1v7.....",
    "pk": "...",
    "version": "1.7.0",
    "name": "My ABT Node",
    "status": 0
    // ... other NodeState properties
  }
}

Blocklet 信息查询

这些查询用于获取有关单个或多个 Blocklet 的信息。

getBlocklet

使用其 DID 检索特定 Blocklet 的详细状态和元数据。

参数

  • input object (required)
    • did string (required) — 要检索的 Blocklet 的 DID。
    • attachRuntimeInfo boolean — 如果为 true,则包含实时 CPU 和内存使用情况。默认为 false。
    • attachDiskInfo boolean — 如果为 true,则包含磁盘使用信息。默认为 false。

返回

  • response Promise<BlockletServerClient.ResponseBlocklet> — 一个解析为包含 Blocklet 状态的对象的 Promise。

示例

javascript
async function fetchBlockletDetails(blockletDid) {
  try {
    const response = await client.getBlocklet({
      input: {
        did: blockletDid,
        attachRuntimeInfo: true,
      },
    });
    console.log('Blocklet Details:', response.blocklet);
  } catch (error) {
    console.error('Error fetching blocklet details:', error);
  }
}

fetchBlockletDetails('z8ia...'); // Replace with a valid blocklet DID

响应示例

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia...",
      "name": "my-awesome-blocklet",
      "version": "1.0.0",
      "title": "My Awesome Blocklet"
    },
    "status": "running",
    "appDid": "z1s...",
    "runtimeInfo": {
      "cpuUsage": 5.2,
      "memoryUsage": 128.7
    }
    // ... other BlockletState properties
  }
}

getBlocklets

获取节点上安装的所有 Blocklet 的列表。

参数

  • input object
    • includeRuntimeInfo boolean — 如果为 true,则包含每个 Blocklet 的运行时信息。默认为 true。

返回

  • response Promise<BlockletServerClient.ResponseGetBlocklets> — 一个解析为包含所有已安装 Blocklet 列表的对象的 Promise。

示例

javascript
async function listAllBlocklets() {
  try {
    const response = await client.getBlocklets();
    console.log(`Found ${response.blocklets.length} blocklets.`);
    response.blocklets.forEach(b => console.log(`- ${b.meta.title}`));
  } catch (error) {
    console.error('Error listing blocklets:', error);
  }
}

listAllBlocklets();

响应示例

json
{
  "code": "ok",
  "blocklets": [
    {
      "meta": { "did": "z8ia...", "title": "My Awesome Blocklet" },
      "status": "running"
    },
    {
      "meta": { "did": "z8ib...", "title": "Another Blocklet" },
      "status": "stopped"
    }
    // ... other blocklets
  ]
}

getBlockletMeta

使用 Blocklet 的 DID 从指定的 Blocklet 商店检索 Blocklet 元数据。

参数

  • input object (required)
    • did string (required) — Blocklet 的 DID。
    • storeUrl string (required) — 要查询的 Blocklet 商店的 URL。

返回

  • response Promise<BlockletServerClient.ResponseBlockletMeta> — 一个解析为包含 Blocklet 元数据的对象的 Promise。

示例

javascript
async function fetchBlockletMeta(blockletDid) {
  try {
    const response = await client.getBlockletMeta({
      input: {
        did: blockletDid,
        storeUrl: 'https://store.blocklet.dev',
      },
    });
    console.log('Blocklet Metadata:', response.meta);
  } catch (error) {
    console.error('Error fetching blocklet metadata:', error);
  }
}

fetchBlockletMeta('z8ia...'); // Replace with a valid blocklet DID

getBlockletMetaFromUrl

直接从注册表 URL 获取 Blocklet 元数据。这对于在安装前检查 Blocklet 很有用。

参数

  • input object (required)
    • url string (required) — Blocklet 元数据的注册表 URL。

返回

  • response Promise<BlockletServerClient.ResponseBlockletMetaFromUrl> — 一个解析为包含元数据和其他商店相关信息的对象的 Promise。

示例

javascript
async function fetchMetaFromUrl() {
  try {
    const response = await client.getBlockletMetaFromUrl({
      input: { url: 'https://store.blocklet.dev/api/blocklets/z8ia...' },
    });
    console.log('Metadata from URL:', response.meta);
  } catch (error) {
    console.error('Error fetching metadata from URL:', error);
  }
}

fetchMetaFromUrl();

getBlockletRuntimeHistory

获取特定 Blocklet 的历史运行时数据(CPU 和内存使用情况)。

参数

  • input object (required)
    • did string (required) — Blocklet 的 DID。
    • hours number (required) — 要检索历史记录的过去小时数。

返回

  • response Promise<BlockletServerClient.ResponseBlockletRuntimeHistory> — 一个解析为包含历史数据点数组的 Promise。

示例

javascript
async function fetchBlockletHistory(blockletDid) {
  try {
    const response = await client.getBlockletRuntimeHistory({
      input: { did: blockletDid, hours: 12 },
    });
    console.log('Blocklet runtime history:', response.historyList);
  } catch (error) {
    console.error('Error fetching blocklet runtime history:', error);
  }
}

fetchBlockletHistory('z8ia...'); // Replace with a valid blocklet DID

getBlockletDiff

将本地 Blocklet 文件与提供的哈希列表进行比较,以识别新增、更改或删除的文件。这对于增量更新很有用。

参数

  • input object (required)
    • did string (required) — Blocklet 的 DID。
    • hashFiles HashFileInput[] (required) — 一个对象数组,每个对象包含一个文件路径及其哈希值。
    • rootDid string — 如果目标是组件,则为根 Blocklet DID。

返回

  • response Promise<BlockletServerClient.ResponseBlockletDiff> — 一个解析为详细说明差异的对象的 Promise。

示例

javascript
async function checkBlockletDiff(blockletDid) {
  try {
    const response = await client.getBlockletDiff({
      input: {
        did: blockletDid,
        hashFiles: [
          { file: 'index.js', hash: '...' },
          { file: 'style.css', hash: '...' }
        ]
      }
    });
    console.log('Blocklet Diff:', response.blockletDiff);
  } catch (error) {
    console.error('Error checking blocklet diff:', error);
  }
}

checkBlockletDiff('z8ia...');

getDynamicComponents

从给定 URL 检索动态组件的元数据。

参数

  • input object (required)
    • url string (required) — 用于获取动态组件元数据的 URL。

返回

  • response Promise<BlockletServerClient.ResponseGetDynamicComponents> — 一个解析为动态组件列表的 Promise。

示例

javascript
async function fetchDynamicComponents(registryUrl) {
  try {
    const response = await client.getDynamicComponents({ input: { url: registryUrl } });
    console.log('Dynamic Components:', response.components);
  } catch (error) {
    console.error('Error fetching dynamic components:', error);
  }
}

fetchDynamicComponents('https://store.blocklet.dev/api/components');

getBlockletsFromBackup

列出备份源中的可用 Blocklet。

返回

  • response Promise<BlockletServerClient.ResponseBlockletsFromBackup> — 一个解析为备份中可用 Blocklet 列表的 Promise。

示例

javascript
async function listBlockletsFromBackup() {
  try {
    const response = await client.getBlockletsFromBackup();
    console.log('Blocklets from backup:', response.backups);
  } catch (error) {
    console.error('Error listing blocklets from backup:', error);
  }
}

listBlockletsFromBackup();

getBlockletBaseInfo

检索 Blocklet 的基本信息,包括用户数、通行证统计信息和最新的备份状态。

参数

  • input object (required)
    • teamDid string (required) — 团队/Blocklet 的 DID。

返回

  • response Promise<BlockletServerClient.ResponseBlockletInfo> — 一个解析为包含 Blocklet 基本信息的对象的 Promise。

示例

javascript
async function fetchBaseInfo(blockletDid) {
  try {
    const response = await client.getBlockletBaseInfo({ input: { teamDid: blockletDid } });
    console.log('Base Info:', response);
  } catch (error) {
    console.error('Error fetching base info:', error);
  }
}

fetchBaseInfo('z8ia...');

响应示例

json
{
  "user": {
    "users": 10,
    "approvedUsers": 8
  },
  "passport": {
    "passports": 12,
    "activePassports": 10
  },
  "backup": {
    "appPid": "z8ia...",
    "status": 1,
    "updatedAt": 1672531200
  }
}

现在您已了解如何查询节点和 Blocklet 信息,接下来可以在 用户和访问管理 部分探索如何管理用户和权限。