LND Sockets added

This commit is contained in:
emad-salah 2020-04-05 18:09:42 +01:00
parent 3ec4b6bd69
commit e456496010
2 changed files with 55 additions and 44 deletions

View file

@ -207,17 +207,17 @@ const server = program => {
const CA = LightningServices.servicesConfig.lndCertPath
const CA_KEY = CA.replace('cert', 'key')
const createServer = async () => {
const createServer = () => {
try {
if (LightningServices.servicesConfig.lndCertPath && program.usetls) {
const [key, cert] = await Promise.all([
FS.readFile(CA_KEY),
FS.readFile(CA)
])
const httpsServer = Https.createServer({ key, cert }, app)
// if (LightningServices.servicesConfig.lndCertPath && program.usetls) {
// const [key, cert] = await Promise.all([
// FS.readFile(CA_KEY),
// FS.readFile(CA)
// ])
// const httpsServer = Https.createServer({ key, cert }, app)
return httpsServer
}
// return httpsServer
// }
const httpServer = Http.Server(app)
return httpServer
@ -236,7 +236,10 @@ const server = program => {
const io = require('socket.io')(serverInstance)
const Sockets = require('./sockets')(io, lnd)
const Sockets = require('./sockets')(
io,
LightningServices.services.lightning
)
require('./routes')(app, defaults, Sockets, {
serverHost: module.serverHost,

View file

@ -5,41 +5,49 @@ const logger = require("winston");
module.exports = (
/** @type {import('socket.io').Server} */
io,
lnd,
lightning,
) => {
const Mediator = require("../services/gunDB/Mediator/index.js");
const EventEmitter = require("events");
class MySocketsEvents extends EventEmitter {}
const mySocketsEvents = new MySocketsEvents();
// register the lnd invoices listener
const registerLndInvoiceListener = socket => {
socket._invoiceListener = {
dataReceived(data) {
socket.emit("invoice", data);
const onNewInvoice = socket => {
const stream = lightning.subscribeInvoice({});
stream.on("data", data => {
socket.emit("invoice:new", data)
})
stream.on("end", () => {
logger.info("New invoice stream ended, starting a new one...")
onNewInvoice(socket);
})
stream.on("error", err => {
logger.error("New invoice stream error:", err);
})
stream.on("status", status => {
logger.error("New invoice stream status:", status);
if (status.code === 14) {
onNewInvoice(socket);
}
})
}
};
lnd.registerInvoiceListener(socket._invoiceListener);
};
// unregister the lnd invoices listener
const unregisterLndInvoiceListener = socket => {
lnd.unregisterInvoiceListener(socket._invoiceListener);
};
// register the socket listeners
const registerSocketListeners = socket => {
registerLndInvoiceListener(socket);
};
// unregister the socket listeners
const unregisterSocketListeners = socket => {
unregisterLndInvoiceListener(socket);
};
const onNewTransaction = socket => {
const stream = lightning.subscribeTransaction({});
stream.on("data", data => {
socket.emit("transaction:new", data)
})
stream.on("end", () => {
logger.info("New invoice stream ended, starting a new one...")
onNewTransaction(socket);
})
stream.on("error", err => {
logger.error("New invoice stream error:", err);
})
stream.on("status", status => {
logger.error("New invoice stream status:", status);
if (status.code === 14) {
onNewTransaction(socket);
}
})
}
io.on("connection", socket => {
logger.info(`io.onconnection`)
@ -78,15 +86,15 @@ module.exports = (
// this is where we create the websocket connection
// with the GunDB service.
Mediator.createMediator(socket);
registerSocketListeners(socket);
onNewInvoice(socket);
onNewTransaction(socket);
/** listening if client has disconnected */
socket.on("disconnect", () => {
unregisterSocketListeners(socket);
logger.info("client disconnected (id=" + socket.id + ").");
});
}
})
return mySocketsEvents;
return io;
};