数据库通知 - 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)