Skip to content

API WebSocket

A API WebSocket da Cloud Service fornece notificações em tempo real para eventos da blockchain, permitindo que aplicações reajam instantaneamente a novos blocos, transações e outras atividades da rede.

Conexão

URL WebSocket

ws://localhost:16181
wss://localhost:16181  # Com SSL (se configurado)

Habilitar WebSocket

Adicione ao seu cs.conf:

ini
wsport=16181
wsallowip=127.0.0.1
wsallowip=192.168.1.0/24

Conexão Básica

javascript
const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:16181');

ws.on('open', () => {
    console.log('Conectado ao WebSocket da Cloud Service');
});

ws.on('close', () => {
    console.log('Desconectado do WebSocket da Cloud Service');
});

ws.on('error', (error) => {
    console.error('Erro WebSocket:', error);
});

Inscrevendo-se em Eventos

Novo Bloco

javascript
// Inscrever-se em novos blocos
ws.send(JSON.stringify({
    method: 'subscribe',
    params: ['block']
}));

ws.on('message', (data) => {
    const event = JSON.parse(data);
    if (event.type === 'block') {
        console.log('Novo bloco:', event.hash);
        console.log('Altura:', event.height);
    }
});

Novas Transações

javascript
// Inscrever-se em novas transações
ws.send(JSON.stringify({
    method: 'subscribe',
    params: ['transaction']
}));

ws.on('message', (data) => {
    const event = JSON.parse(data);
    if (event.type === 'transaction') {
        console.log('Nova transação:', event.txid);
    }
});

Monitorar Endereço

javascript
// Monitorar endereço específico
ws.send(JSON.stringify({
    method: 'subscribe',
    params: ['address', 'seu_endereço_cs']
}));

Formato de Eventos

Evento de Bloco

json
{
    "type": "block",
    "hash": "0000abc...",
    "height": 524288,
    "time": 1234567890,
    "tx_count": 15,
    "size": 4096
}

Evento de Transação

json
{
    "type": "transaction",
    "txid": "abc123...",
    "inputs": 2,
    "outputs": 3,
    "value": 10.5,
    "fee": 0.001,
    "time": 1234567890
}

Reconexão Automática

javascript
const WebSocket = require('ws');

function conectar() {
    const ws = new WebSocket('ws://localhost:16181');

    ws.on('open', () => {
        console.log('Conectado');
        // Re-inscrever em eventos
        ws.send(JSON.stringify({ method: 'subscribe', params: ['block'] }));
    });

    ws.on('close', () => {
        console.log('Desconectado. Reconectando em 5s...');
        setTimeout(conectar, 5000);
    });

    ws.on('error', (err) => {
        console.error('Erro:', err.message);
    });

    ws.on('message', (data) => {
        const evento = JSON.parse(data);
        console.log('Evento:', evento.type);
    });
}

conectar();

Exemplo Python

python
import asyncio
import json
import websockets

async def monitorar_blocos():
    uri = "ws://localhost:16181"
    async with websockets.connect(uri) as ws:
        # Inscrever em novos blocos
        await ws.send(json.dumps({
            "method": "subscribe",
            "params": ["block"]
        }))

        print("Aguardando novos blocos...")
        async for message in ws:
            evento = json.loads(message)
            if evento.get("type") == "block":
                print(f"Novo bloco #{evento['height']}: {evento['hash']}")

asyncio.run(monitorar_blocos())

Próximos Passos

Lançado sob a Licença MIT.