订阅事件

通过 Websocket 接收区块链网络上发生的事件。

API

GET /api/v1/networks/{network}/events/subscribe

Url Path 参数

描述

network

通道名称

access_token

访问REST API所需的Access Token

source

订阅的事件类型 (“Tx”, “Config”, “Contract”, “Block”)。订阅多种类型时,使用逗号(,)分割多个订阅类型,”*“ 表示订阅所有类型的事件

消息内容

名称

类型

描述

id

String

事件ID,通道内唯一

name

String

事件名称

type

EventType

事件类型(“Tx”, “Config”, “Contract”, “Block”):

Tx:发生了一笔交易;

Config:区块链系统配置发生变更;

Contract:交易中用户智能合约设置的事件;

Block:产生了新的区块;

network

String

通道名称

instance_id

String

订阅事件的实例ID,组织内唯一

content

Object

EventType为“Tx”或“Config” 时,该值为Transaction结构;

EventType为“Contract”时,该值为String类型,内容为经过Base64编码的事件内容;

当EventType为“Block”时,该值为Block结构;

Transaction

名称

类型

描述

id

String

交易ID,当交易类型是配置变更时,该值为空

state

String

交易状态,”VALID” 表示合法交易,其它值表示非法交易

from

String

交易的发起者,格式为 <组织MSP>.<用户名>

to

String

交易调用的目标链码名称,当交易类型是配置变更时,该值为空

input

String

经过JSON编码的链码调用参数,配置变更时为JSON编码的common.ConfigUpdate

events

List<Event>

交易所产生的区块链事件列表

data

Object

交易的详细内容,数据结构为交易中的common.Payload

Block

名称

类型

描述

number

Integer

区块块高

hash

String

hex 编码后的当前区块hash值

previous_hash

String

hex 编码后的上一区块hash值

create_time

Integer

当前区块创建时间,Unix秒级时间戳

transactions

List<String>

当前区块中,包含的所有交易的交易ID列表

示例

请求示例

wscat -c "ws://your.gateway.endpoint/api/v1/networks/channel3/events/subscribe?access_token=<Your URL Encoded Access Token>&source=%2A"

正常推送消息示例

{
  "type": "Block",
  "platform": "Fabric",
  "instance_id": "csi-e2ehmfqasth-bcw7tzao2dzeo",
  "network": "channel3",
  "id": "block-282",
  "name": "282",
  "content": {
    "number": 282,
    "hash": "f7b42d07509c463f8e8cde0fcc8325b42e8bf7fd6a7a24dd207eed297fcd6358",
    "create_time": 1581589504,
    "previous_hash": "b8de08d49217c1d8f4ea398c8c61fe2a5bc46ec7bb6c95f44dfd29eaf6c272ab",
    "transactions": [
      "dc90b701e27afa5120ee003ef9d51b86a2ff9e1a9d8537f65387bde6d92c5cba"
    ]
  }
}

错误码

请参考错误码