@SDUSC
1 事件相关信息的获取
1.1 获取事件账户列表
GET /ledgers/{ledger}/events/user/accounts?fromIndex={fromIndex}&count={count}
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
query |
fromIndex |
否 |
查询的起始序号,默认为0 |
数字 |
query |
count |
否 |
查询返回事件账户的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集 |
数字 |
1.2 获取事件账户
GET /ledgers/{ledger}/events/user/accounts/{address}
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
address |
账户地址 |
是 |
事件账户地址 |
字符串 |
1.3 获取事件账户总数
GET /ledgers/{ledger}/events/user/accounts/count
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
1.4 获取事件名数量
GET /ledgers/{ledger}/events/user/accounts/{address}/names/count
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
path |
address |
是 |
事件账户地址 |
字符串 |
1.5 获取事件名列表
GET /ledgers/{ledger}/events/user/accounts/{address}/names?fromIndex={fromIndex}&count={count}
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
path |
address |
是 |
事件账户地址 |
字符串 |
query |
fromIndex |
否 |
查询的起始序号,默认为0 |
数字 |
query |
count |
否 |
查询返回事件账户的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集 |
数字 |
1.6 获取最新事件
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}/latest
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
path |
address |
是 |
事件账户地址 |
字符串 |
path |
event_name |
是 |
事件名 |
字符串 |
1.7 获取事件数量
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}/count
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
path |
address |
是 |
事件账户地址 |
字符串 |
path |
event_name |
是 |
事件名 |
字符串 |
1.8 获取事件列表
GET /ledgers/{ledger}/events/user/accounts/{address}/names/{event_name}?fromSequence={fromSequence}&count={count}
参数
请求类型 |
名称 |
是否必需 |
说明 |
数据类型 |
path |
ledger |
是 |
账本哈希 |
字符串 |
path |
address |
是 |
事件账户地址 |
字符串 |
path |
event_name |
是 |
事件名 |
字符串 |
query |
fromSequence |
否 |
查询的起始序号,默认为0 |
数字 |
query |
count |
否 |
查询返回事件的数量,默认最大返回值为100,小于0或大于100均返回最大可返回结果集 |
数字 |
2事件的监听
2.1 事件的发布
TransactionTemplate txTemp = blockchainService.newTransaction(ledger);
// sequence是针对此消息name的序列严格递增,初始为-1,可通过查询事件名下最新事件获取序列参数
txTemp.eventAccount(Bytes.fromBase58("LdeNiAPuZ5tpYZVrrbELJNjqdvB51PBpNd8QA")).publish("topic", "content", -1);
PreparedTransaction ptx = txTemp.prepare();
ptx.sign(adminKey);
TransactionResponse response = ptx.commit();
2.2. 监听事件
// 监听系统事件,目前仅有新区快产生事件
blockchainService.monitorSystemEvent(ledger,
SystemEvent.NEW_BLOCK_CREATED, 0, (eventMessages, eventContext) -> {
for (Event eventMessage : eventMessages) {
// content中存放的是当前链上最新高度
System.out.println("New block:" + eventMessage.getSequence() + ":" + BytesUtils.toLong(eventMessage.getContent().getBytes().toBytes()));
}
});
// 监听用户自定义事件
blockchainService.monitorUserEvent(ledger, "LdeNr7H1CUbqe3kWjwPwiqHcmd86zEQz2VRye", "sample-event", 0, (eventMessage, eventContext) -> {
BytesValue content = eventMessage.getContent();
switch (content.getType()) {
case TEXT:
case XML:
case JSON:
System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + content.getBytes().toUTF8String());
break;
case INT64:
case TIMESTAMP:
System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + BytesUtils.toLong(content.getBytes().toBytes()));
break;
default: // byte[], Bytes
System.out.println(eventMessage.getName() + ":" + eventMessage.getSequence() + ":" + content.getBytes().toBase58());
break;
}
});
|