Hello Michael,
Sorry to trouble you again, can you please help me by checking the code below? It works fine under the native C++ wrapper but when I switch to the new pure JS version the final call back never fires. Any help / direction would be greatly appreciated.
process.env.GRPC_SSL_CIPHER_SUITES='ECDHE-ECDSA-AES128-GCM-SHA256'// Old Way: var grpc = require('grpc');var grpc= require('@grpc/grpc-js');var fs = require("fs");var protoLoader = require("./proto-loader.js");var lndCert = fs.readFileSync("/Users/patrickchugh/Dropbox/Dev/nodejs/tls.cert");var macfile = fs.readFileSync("/Users/patrickchugh/Dropbox/Dev/nodejs/admin.macaroon");var macaroon = macfile.toString('hex');let metadata = new grpc.Metadata();metadata.add('macaroon', macaroon);let macaroonCreds = grpc.credentials.createFromMetadataGenerator((params, callback) =>callback(null, metadata));//Combine SSL + macaroon metadata in the headersvar sslCreds = grpc.credentials.createSsl(lndCert);var credentials = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds);// Old Way: var lnrpcDescriptor = grpc.load('rpc.proto');var packageDefinition = protoLoader.loadSync('rpc.proto', []);var lnrpcDescriptor = grpc.loadPackageDefinition(packageDefinition);var lnrpc = lnrpcDescriptor.lnrpc;lightning.getInfo({}, function(err, response) {console.log('GetInfo:', response);});-- With Gratitude, Patrick Chugh http://www.patrickchugh.com 8/F, Unit A, Cambridge House, Taikoo Place, 979 King's Road, Island East, Quarry Bay, Hong Kong. Tel: 852.2293.2478 Fax: 852.3020.1834
Thanks for the speedy response Michael - I figured out the problem myself in the end!
The issue was that when making a call to a remote GRPC server the request times out too quickly.
In fact, even when I call a local server about 1/10 times my request fails because the server couldn't respond in time. After adding in a 5 second DEADLINE object to the calling command it finally worked.
May I suggest increasing the default timeout of your GRPC routine? Thanks!
I am afraid no error message was shown so I had to use a process
of elimination to figure it out.
Michael and the rest of the team: Do you have any advice on how I
can get this pure JS version of grpc running on nodeJS version on
v8.6.0? I am restricted for my current project with this version.
Version 8.6 supports http2 experimentally with the --expose-http2
command line argument. However, I cannot get the library to work.
Any help or workarounds you can offer? What features of 9.x or
above does it require specifically?
Thanks in advance!