Suscríbete a eventos usando geth websocket

Estoy tratando de suscribirme a geth usando la API websocket. El primer paso fue iniciar geth:

geth --ws --wsport=8456 --wsorigins="*" --fast --cache=512 --rpcport=8455 --rpc --rpcapi="personal,eth,network"

Luego traté de conectarme usando websockets de python:

from websockets import connect
import asyncio

async def get_event():
    async with connect("ws://localhost:8456") as ws:
        await ws.send(json.dumps({"id": 1, "method": "eth_subscribe", "params": ["newPendingTransactions"]}))
        subscription_response = await ws.recv()
        while True:
            try:
                message = await asyncio.wait_for(ws.recv(), timeout=60)
                pass
            except asyncio.TimeoutError:
                # No data in 20 seconds, check the connection.
                try:
                    pong_waiter = await ws.ping()
                    await asyncio.wait_for(pong_waiter, timeout=10)
                except asyncio.TimeoutError:
                    # No response to ping in 10 seconds, disconnect.
                    logger.critical("socket timeout")
                    break
            else:
                pprint(message)
if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    while True:
        loop.run_until_complete(get_event())

Recibo la respuesta de suscripción: '{"jsonrpc":"2.0","id":1,"result":"0xde19c48fe52cd12207f807f330630e2b"}'

Pero no recibir ningún mensaje después de eso y ejecutarse en TimeoutError. ¿Alguna idea de lo que va mal?

Respuestas (1)

A primera vista, parece que no está habilitando ninguno de los métodos --wsapi disponibles (personal, admin, eth, web3). Los está habilitando en --rpcapi. Eso podría ser lo que está causando el tiempo de espera. ¿Tiene tiempo de espera geth, o su aplicación?