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/24Conexã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
- Comandos RPC — Para consultas e operações diretas
- API REST — Para consultas HTTP sem estado