Blockchain 无法调用erisdb.eventPoll rpc调用
我的区块链在本地运行。我使用节点json rpc模块进行rpc调用。我能打几个像erisdb.getBlockchainInfo这样的电话。 我尝试了erisdb.eventSubscribe呼叫:Blockchain 无法调用erisdb.eventPoll rpc调用,blockchain,eris-blockchain,Blockchain,Eris Blockchain,我的区块链在本地运行。我使用节点json rpc模块进行rpc调用。我能打几个像erisdb.getBlockchainInfo这样的电话。 我尝试了erisdb.eventSubscribe呼叫: client.call( { "jsonrpc": "2.0", "method": "erisdb.eventSubscribe", "params": { "event_id": "NewBlock" }, "id": "0" }, 它成功地向我返回了一个s
client.call(
{
"jsonrpc": "2.0", "method": "erisdb.eventSubscribe", "params": {
"event_id": "NewBlock"
}, "id": "0"
},
它成功地向我返回了一个sub_id:
{ result: { sub_id: '7878EB2ECC668AEE19D958B89C4ED6E145D9298E91366D67F93CD2A20E995829' },
error: null,
id: '0',
jsonrpc: '2.0' }
我使用该sub_id调用erisdb.eventPoll调用:
client.call(
{
"jsonrpc": "2.0", "method": "erisdb.eventPoll", "params": {
"sub_id":"7878EB2ECC668AEE19D958B89C4ED6E145D9298E91366D67F93CD2A20E995829"
}, "id": "1"
},
但它给出了以下错误:
{ result: null,
error:
{ code: -32603,
message: 'Subscription not active. ID: 7878EB2ECC668AEE19D958B89C4ED6E145D9298E91366D67F93CD2A20E995829' },
id: '1',
jsonrpc: '2.0' }
我的eris db版本是0.12.1。目前我们有两种不同的API。您正在使用的那个我们称之为“v0”API。它针对长轮询Javascript客户端进行了优化。我的猜测是,您的订阅在某个硬编码超时(恰好是10秒)之前获得了回报。在
eventSubscribe
呼叫之后,您是否尝试过快速成功地拨打eventPoll
呼叫
这是“v0”收获函数:。它以循环方式运行,清除最近未轮询的旧订阅。如果您在轮询之前等待的时间超过10秒,则您的订阅可能已被收获(删除)
我们有另一个为连锁管理优化的API,称为“tendermint”API(因为它继承了tendermint共识引擎的传统)。它是一种并行API,由eris pm工具使用。它还有一个可由websocket端点访问的subscribe方法。这可能对您有用,因为它的订阅从未获得回报
您可以这样尝试:
启动您的链:
$ eris chains start testchain
获取一个简单的websocket客户端:
$ go get github.com/raphael/wsc
连接到websocket端点:
$ wsc ws://0.0.0.0:46657/websocket
2017/01/21 01:03:51 connecting to ws://0.0.0.0:46657/websocket...
2017/01/21 01:03:51 ready, exit with CTRL+C.
通过将{“jsonrpc”:“2.0”,“method”:“Subscribe”,“params”:[“NewBlock”]}
作为一行粘贴到终端中,订阅NewBlock
事件:
>> { "jsonrpc": "2.0", "method": "subscribe", "params": ["NewBlock"] }
然后,您应该会收到一个新的块事件流(大约每秒1个),如:
目前我们有两种不同的API。您正在使用的那个我们称之为“v0”API。它针对长轮询Javascript客户端进行了优化。我的猜测是,您的订阅在某个硬编码超时(恰好是10秒)之前获得了回报。在
eventSubscribe
呼叫之后,您是否尝试过快速成功地拨打eventPoll
呼叫
这是“v0”收获函数:。它以循环方式运行,清除最近未轮询的旧订阅。如果您在轮询之前等待的时间超过10秒,则您的订阅可能已被收获(删除)
我们有另一个为连锁管理优化的API,称为“tendermint”API(因为它继承了tendermint共识引擎的传统)。它是一种并行API,由eris pm工具使用。它还有一个可由websocket端点访问的subscribe方法。这可能对您有用,因为它的订阅从未获得回报
您可以这样尝试:
启动您的链:
$ eris chains start testchain
获取一个简单的websocket客户端:
$ go get github.com/raphael/wsc
连接到websocket端点:
$ wsc ws://0.0.0.0:46657/websocket
2017/01/21 01:03:51 connecting to ws://0.0.0.0:46657/websocket...
2017/01/21 01:03:51 ready, exit with CTRL+C.
通过将{“jsonrpc”:“2.0”,“method”:“Subscribe”,“params”:[“NewBlock”]}
作为一行粘贴到终端中,订阅NewBlock
事件:
>> { "jsonrpc": "2.0", "method": "subscribe", "params": ["NewBlock"] }
然后,您应该会收到一个新的块事件流(大约每秒1个),如: