endpoints/getting-started-grpc/server.js (40 lines of code) (raw):

// Copyright 2017 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. 'use strict'; const path = require('path'); const PROTO_PATH = path.join(__dirname, '/protos/helloworld.proto'); const grpc = require('@grpc/grpc-js'); const protoLoader = require('@grpc/proto-loader'); const packageDefinition = protoLoader.loadSync(PROTO_PATH, { keepCase: true, longs: String, enums: String, defaults: true, oneofs: true, }); const helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld; // Implement the SayHello RPC method. const sayHello = (call, callback) => { callback(null, {message: `Hello ${call.request.name}`}); }; // Start an RPC server to handle Greeter service requests const startServer = PORT => { const server = new grpc.Server(); server.addService(helloProto.Greeter.service, {sayHello: sayHello}); server.bindAsync( `0.0.0.0:${PORT}`, grpc.ServerCredentials.createInsecure(), () => { console.log(`gRPC server started on port ${PORT}`); } ); }; // The command-line program const {argv} = require('yargs') .usage('Usage: node $0 [-p PORT]') .option('port', { alias: 'p', type: 'number', default: 50051, global: true, }) .wrap(120) .epilogue( 'For more information, see https://cloud.google.com/endpoints/docs' ); startServer(argv.port);