Infura .watch Error: Respuesta JSON RPC no válida: “” [duplicado]

Estoy tratando de usar el comando .watch() en un evento de mi contrato. Cada vez que ejecuto el archivo .js, aparece lo siguiente:

Error: respuesta JSON RPC no válida: “”

No estoy en mi computadora y no puedo pegar mi archivo .js hasta más tarde hoy, pero ¿qué sugiere este error? Se muestra cada vez que se ejecuta el archivo. ¿Podría ser un problema con la instancia del contrato o con el propio web3?

Gracias de antemano.

No puede conectarse a su nodo (creo que está utilizando el cliente geth).
¿Qué herramientas está utilizando (por ejemplo, trufa, ganache, etc.)?
Estoy implementando el contrato en la red de prueba de Ropsten a través de Remix y configurando el proveedor web3 en el nodo de Ropsten Infura.
Infura no admite eventos usando el reloj, debe usar la suscripción desde web3 v1.0 y el punto final de websocket.

Respuestas (3)

Como mencionó Ismael, Infura no admite el uso de eventos .watch(). La solución es usar los websockets de Infura. El código de trabajo se puede encontrar aquí: proveedor Infura web3 para eventos (.get y .watch)

También agrego problemas al usar watch() en web3 para ver eventos.

Pero logro resolverlos usando el método alternativo ( docs ):

// Or pass a callback to start watching immediately
var event = myContractInstance.MyEvent([{valueA: 23}] [, additionalFilterObject] , function(error, result){
  if (!error)
    console.log(result);
});

Para un evento de este tipo:

event singleNumber(uint256 number);

Obtengo el valor así:

var event = myContractInstance.singleNumber({}, function(error, result){
  if (!error)
    var number = result.args.number.toNumber();
});

Hay un hilo de github sobre esta respuesta: https://github.com/trufflesuite/truffle/issues/852

De acuerdo con esto, es un problema con Infura y los controladores abiertos.