数据库通知 - CybexDex/cybex-node-doc GitHub Wiki

在CYBEX中,通过websocket连接的方式监听数据库变更或事件发生。

CYBEX运行通过以下方式进行订阅:

set_subscribe_callback( int identifier, bool clear_filter ):


简单的全局监听回调可以通过该方法实现。

每个通知经由全节点初始化的通知都会具有一个唯一的ID,用户通过identifier参数为ID赋值。


set_pending_transaction_callback(int identifier):


_待确认_的事务回调。



subscribe_to_market(int identifier, asset_id a, asset_id b)):


订阅市场上关于a:b交易对的变更并使用identifier的ID进行通知。


get_full_accounts(array account_ids, bool subscribe):


根据指定account_ids查询该账户所有相关信息,并通过将subscribe设置为True订阅该账户的更新。

让我们通过一个全局订阅的回调将通知与通常的RPC调用做一下区分:

> {"id":4,"method":"call","params":[DATABASE_API_ID,"set_subscribe_callback",[SUBSCRIPTION_ID, true]]}

上述调用需要将SUBSCRIPTION_ID注册为ID来获取通知.

自此,你从见证人节点获取的对象都会自动订阅该对象未来的所有变更。

在调用set_subscribe_callback方法之后,见证人节点会将该对象的每一次变更都以通知的形式发送给你:

< {
    "method": "notice"
    "params": [
        SUBSCRIPTION_ID,
        [[
            { "id": "2.1.0", ...  },
            { "id": ...  },
            { "id": ...  },
            { "id": ...  }
        ]]
    ],
}

Session示例

以下是一个完整seesion的示例:

> {"method": "call", "params": [1, "login", ["", ""]], "id": 2}
< {"id":2,"result":true}
> {"method": "call", "params": [1, "database", []], "id": 3}
< {"id":3,"result":2}
> {"method": "call", "params": [1, "history", []], "id": 4}
< {"id":4,"result":3}
> {"method": "call", "params": [2, "set_subscribe_callback", [5, false]], "id": 6}
< {"id":6,"result":null}
> {"method": "call", "params": [2, "get_objects", ["2.1.0"](/CybexDex/cybex-node-doc/wiki/"2.1.0")], "id": 7}
(plenty of data coming in from this point on)