Hago una aplicación web que necesita los eventos de mi contrato para inicializar su estado. Estaba usando el proveedor websocket de infura, pero parece retrasarse mucho y cerrar las conexiones inesperadamente durante la última semana. getPastEvents
método no funciona bien.
Me gustaría que mi aplicación sea accesible desde teléfonos inteligentes (al menos para el modo de solo lectura). Por lo tanto, no puedo confiar solo en que el nodo o la billetera se ejecuten en la misma computadora.
¿Hay alguna manera de obtener todos los eventos de algún contrato de manera confiable? Por ejemplo, ¿cómo logra etherdelta esto? ¿Ejecutan un servidor, con su propio nodo privado, que genera datos estáticos en cada bloque?
Puede usar la vigilancia de eventos en cada llamada de transacción y luego obtener el evento de los recibos de Tx.
Código de muestra
const self = this;
this.props.deposit(this.state.amount).then((result) => {
if (!result) {
Message.error('XYZ')
}
var event = self.props.getEventXXX()
event.watch(function (err, response) {
if(response.event == 'XXX') {
notification.success({
message: 'ABC',
description: 'XYZ!',
});
event.stopWatching()
}
});
También puede consultar este documento: https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-events
Rob Yart
HaĐANG