IDE / Text editor
Untuk text editor, silakan gunakan IDE favorit Anda, pada tutorial digunakan VS Code.
Setup Environment
Tutorial gRPC akan menggunakan Node.js, untuk itu silakan install Node.js.
Kemudian install module grpc-tools
$ npm install -g grpc-tools
$ npm install protoc-gen-grpc -g
Setelah selesai setup, kita akan init project. Namun sebelum itu, pada tutorial akan dibuat 3 folder, yaitu client, server dan protos. Penamaan folder tidak wajib sama.
Masuk ke direktori project Anda. Buat 3 direktori diatas.
Kemudian kita init node.js project. Lalu isi pertanyaan dari npm init sesuai kebutuhan Anda.
$ npm init
Berikutnya kita akan menambahkan module npm untuk keperluan project gRPC. Pada root dari direktori project, jalankan perintah berikut:
$ npm install google-protobuf
$ npm install grpc
Perhatian, module grpc sudah deprecated, Kedepannya disarankan untuk menggunakan @grpc/grpc-js. Pada tutorial masih digunakan module grpc karena code auto generate dari protoc compiler masih menggunakan modul tersebut.
Berikut hasil akhir package.json, module google-protobuff sudah ditambahkan.
{
"name": "grpcnode",
"version": "1.0.0",
"description": "tutorial grpc node",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "skillplus",
"license": "ISC",
"dependencies": {
"google-protobuf": "^3.20.1",
"grpc": "^1.24.11"
}
}
Berikutnya kita akan membuat file protos/dummy.proto, untuk kebutuhan testing awal (untuk memastikan aplikasi berjalan baik).
syntax = "proto3"; package dummy; message DummyMessage {} service DummyService {}
Kemudian pada terminal kita jalankan perintah untuk compile file proto diatas.
$ protoc-gen-grpc --proto_path=protos --js_out=import_style=commonjs,binary:server --grpc_out=server protos/dummy.proto
Akan dihasilkan 2 file pada folder server, yaitu dummy_pb.js dan dummy_grpc_pb.js.
Sampai disini berarti kita sudah berhasil setup environment dan melakukan generation code.
Boilerplate dan Testing Environment
Berikutnya kita akan testing apakah environment sudah tersetup dengan baik.
Buat file server/index.js, lalu tambahkan code berikut
var grpc = require('grpc'); function main(){ var Server = new grpc.Server(); Server.bindAsync("127.0.0.1:50051", grpc.ServerCredentials.createInsecure(), ()=>{ Server.start(); }); console.log("Server running.."); } main()
Kemudian kita buat client/client.js
var grpc = require('grpc'); var services = require('../server/dummy_grpc_pb'); function main(){ var client = new services.DummyServiceClient('localhost:50051', grpc.credentials.createInsecure()); console.log('client', client); } main()
Mari kita jalankan kedua program diatas, buka 2 terminal.
Buka direktori server, lalu jalankan
$ node index.js
# akan menampilkan log berikut
Server running..
Buka direktori client, lalu jalankan
$ node client.js
# akan menampilkan log berikut:
client ServiceClient {
'$interceptors': [],
'$interceptor_providers': [],
'$callInvocationTransformer': undefined,
'$channel': Channel {}
}
Kode diatas, belum memiliki fungsi apapun. Pada modul ini kita baru melakukan setup dasar, memastikan environment sudah siap.
Pada modul berikutnya kita akan mulai implementasi gRPC.