From d0af6532a3e827567cd0894af528f0fb14ab0851 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Fri, 2 Oct 2020 11:54:51 -0400 Subject: [PATCH] socket LND RPC --- src/sockets.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/sockets.js b/src/sockets.js index a6bc07ff..52af968e 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -347,5 +347,46 @@ module.exports = ( } }) + io.of('/lndstreaming').on('connect', socket => { + // TODO: unsubscription + + /** + * Streaming stuff in LND uses these events: data, status, end, error. + */ + + try { + const { services } = LightningServices + + const { service, method, args: unParsed } = socket.handshake.query + + const args = JSON.parse(unParsed) + + const call = services[service][method](args) + + call.on('data', data => { + socket.emit('data', data) + }) + + call.on('status', status => { + socket.emit('status', status) + }) + + call.on('end', () => { + socket.emit('end') + }) + + call.on('error', err => { + socket.emit('error', err) + }) + + // Possibly allow streaming writes such as sendPaymentV2 + socket.on('write', args => { + call.write(args) + }) + } catch (err) { + logger.error('LNDRPC: ' + err.message) + } + }) + return io }