ABCI server for Node.js. Supports Tenderdash 0.34+
npm install @dashevo/abci
Requires Node.js v10.9+
let createServer = require('abci')
let server = createServer({
info (request) {
console.log('got info request', request)
return { ... }
}
// implement any ABCI method handlers here
})
process.on('SIGTERM', async () => {
await server.close();
// Gracefull shutdown
process.exit(0);
});
server.on('connection', (socket) => {
console.log(`Accepted new ABCI connection #${socket.connection.id} from ${socket.remoteAddress}:${socket.remotePort}`);
socket.on('error', (e) => {
console.error(`ABCI connection #${socket.connection.id} error`);
});
socket.once('close', (hasError) => {
let message = `ABCI connection #${socket.connection.id} is closed`;
if (hasError) {
message += ' with error';
}
console.log(message);
});
});
server.once('close', () => {
console.log('ABCI server is closed');
});
server.on('error', async (e) => {
console.error(e);
// Graceful shutdown
process.exit(1);
});
server.on('listening', () => {
console.log(`ABCI server is waiting for connections`);
});
server.listen(26658)
Returns a net.Server
that accepts ABCI connections from a Tendermint node.
app
should be an object with ABCI method handler functions. Each handler receives one request
argument, and can return the response value or a Promise
which resolves to the response value. cb
responds to the ABCI request with either the error or response
value.
Supported ABCI methods are:
echo
flush
info
setOption
initChain
query
beginBlock
checkTx
deliverTx
endBlock
commit