lnd.xprv/docs/grpc/javascript.md

74 lines
2.2 KiB
Markdown
Raw Normal View History

# How to write a simple `lnd` client in Javascript using `node.js`
First, you'll need to initialize a simple nodejs project:
```
npm init (or npm init -f if you want to use the default values without prompt)
```
Then you need to install the Javascript grpc library dependency:
```
npm install grpc --save
```
You also need to copy the `lnd` `rpc.proto` file in your project directory (or
at least somewhere reachable by your Javascript code).
The `rpc.proto` file is [located in the `lnrpc` directory of the `lnd`
sources](https://github.com/lightningnetwork/lnd/blob/master/lnrpc/rpc.proto).
In order to allow the auto code generated to compile the protos succucsfully,
you'll need to comment out the following line:
```
//import "google/api/annotations.proto";
```
Let's now write some Javascript code that simply displays the `getinfo` command
result on the console:
```js
var grpc = require('grpc');
var lnrpcDescriptor = grpc.load("rpc.proto");
var lnrpc = lnrpcDescriptor.lnrpc;
var lightning = new lnrpc.Lightning('localhost:10009', grpc.credentials.createInsecure());
lightning.getInfo({}, function(err, response) {
console.log('GetInfo:', response);
});
```
You just have to lauch your newly created Javascript file `getinfo.js` using
`nodejs`:
```
node getinfo.js
```
You should get something like this in your console:
```
GetInfo: { identity_pubkey: '03c892e3f3f077ea1e381c081abb36491a2502bc43ed37ffb82e264224f325ff27',
alias: '',
num_pending_channels: 0,
num_active_channels: 0,
num_peers: 0,
block_height: 1087612,
block_hash: '000000000000024b2acc37958b15010057c6abc0a48f83c8dd67034bee2cb823',
synced_to_chain: true,
testnet: true }
```
With the above, you should have all the `lnd` related `gRPC` dependencies
installed locally in your local project. In order to get up to speed with
`protofbuf` usage from Javascript, see [this official `protobuf` reference for
Javascript](https://developers.google.com/protocol-buffers/docs/reference/javascript-generated).
Additionally, [this official gRPC
resource](http://www.grpc.io/docs/tutorials/basic/node.html) details how to
drive `gRPC` from `node.js` including the basics of making RPC calls, streaming
RPC's (bi-directional and uni-directional), etc.