发布/订阅 API
Conflux 的发布-订阅 API(也称为 pub-sub)使得可以持续地查询特定的项目,而不需要通过 JSON-RPC HTTP 接口进行轮询。 你可以在 TCP 或 WebSocket 连接之上使用 Conflux 的发布-订阅 API(也称为 pub-sub)。
使用发布-订阅 API,请确保您可以访问具有 TCP 或 WebSocket 端口打开的节点。 如果您维护自己的节点,请确保其 TCP 或 WebSocket 端口已打开,以便使用发布-订阅 API。您可以使用命令行接口(CLI)标志--jsonrpc-tcp-port PORT
和--jsonrpc-ws-port PORT
(参见conflux --help
),或者通过 jsonrpc_tcp_port
和 jsonrpc_ws_port
配置参数(参见 run/default.toml
)进行设置。 在本文档中,我们将使用默认的 TCP 端口(12536
)和 WebSocket 端口(12535
)。
订阅
您可以通过 cfx_subscribe
JSON-RPC 订阅主题。 这将返回一个订阅 ID,稍后可以使用 cfx_unsubscribe
JSON-RPC 取消订阅。
以下是如何使用 nc
(netcat
)在 TCP 连接上创建订阅的示例:
> nc localhost 12536
{ "jsonrpc": "2.0", "method": "cfx_subscribe", "params": ["topic"], "id": 1 }
{ "jsonrpc": "2.0", "result": "0x2ee8e71befef9049", "id": 1 }
...
{ "jsonrpc": "2.0", "method": "cfx_unsubscribe", "params": ["0x2ee8e71befef9049"], "id": 2 }
{ "jsonrpc": "2.0", "result": true, "id": 2 }
以下示例展示了如何使用 websocat
在 WebSocket 连接上创建订阅:
> websocat ws://localhost:12535
{ "jsonrpc": "2.0", "method": "cfx_subscribe", "params": ["topic"], "id": 1 }
{ "jsonrpc": "2.0", "result": "0x2ee8e71befef9049", "id": 1 }
...
{ "jsonrpc": "2.0", "method": "cfx_unsubscribe", "params": ["0x2ee8e71befef9049"], "id": 2 }
{ "jsonrpc": "2.0", "result": true, "id": 2 }