Open Rhain opened 6 years ago
测试了一下,确实是subscribe来订阅, 后面调用transfer方法的时候收到了通知。 但是还有一个疑问,当有一段时间没有收到通知的时候就报
Unexpected token < in JSON at position 0
这个错误。
我的理解是这个应该会保持一个长连接,每过一段时间就会返回一个数据包。但是没有数据的时候返回了空,导致解析异常?异常之后这个长连接感觉就结束了, 问题来了,应该如果保持这个长连接呢?
你好,neb.js的 subscribe 需要指定一个函数来接收返回event事件,比如:
neb.api.subscribe(["chain.contract.TestContract"],onDownloadProgress )
var onDownloadProgress = function(event){
console.log(event);
}
@yupnano 使用你说的方式指定了一个onDownloadProgeress 方法.
neb.api.subscribe({"topics": ["chain.contract.TestToken"]}, onDownloadProgress ).then(function(eventData) {
logger.info('event data:' + JSON.stringify(eventData));
}).catch(function (e) {
logger.error("error:" + e)
});
function onDownloadProgress(event) {
logger.warn('subscribe event:' + event);
}
会有这么一个情况,如果启动这个订阅后一段时间时间没有订阅数据返回的话,就会报下面的错:
一旦报错了,后面感觉订阅就失败了,后面即使有调用transfer方法也不会收到订阅信息了。
如果启动订阅后,马上调用了transfer方法,是可以收到订阅信息。但是有时候又收不到,感觉很不稳定,同时收到这个信息的时间会比交易成功迟比较久的时间,给人的感觉就是通知不及时。不知道这是不是在测试环境的原因?
对于这种订阅,有没有一种稳定的方法可以获取到订阅信息的?
@yupnano 可不可以解答下, 后面会基于星云做项目,这个订阅事件的功能还是很关键的,如果这个功能有问题,那可能会转向尝试其他公链,还请帮忙解答下呀。
直接连接测试网或主网请求subscribe的话,可能会由于网络问题丢失event,甚至连接失败。 建议运行本地节点,然后与主网同步,然后向本地节点请求subscribe,这样应该会稳定一些。
是不是意味着即使是运行了本地节点,也有可能会丢失event? 所以又提供了一个通过txhash来获取event的接口,这样即使subscribe没有获取到event,也可以通过txhash来查询event数据?
event subscribe 请问有进展吗?
比如说一个NRC20的 transfer事件, 当一个账户调用了transfer方法后,虽然有调用transferEvent, 但是没有文档写明如何才能订阅到这个事件。
以太坊的是可以监听到这样的事件的。星云文档里面好像没有说明。
用处之一,比如说有其他人给我的地址transfer了token,我需要可以被通知到这个事件进行处理, 不知道星云对这种需求时如何处理的。 在网上未找到相应的文档。 只看到了getEventsByHash这个相关的方法,但是这个需要有hash才行,问题是别人给我transfer了token,我肯定是不知道他的交易hash的,所以这个方法也是没有用。
还请帮忙解答下。
使用了subscribe 方法,但是按照文档中代码来使用的时候报错。 代码如下:
但是过一段时间会报下面的错误: