protoc-gen-grpc
Version:
Protocol Buffers Compiler (protoc) plugin for generating grpc interfaces in TypeScript..
89 lines • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const debug = require("debug");
// support grpc-js
const grpc = require("@grpc/grpc-js");
// support grpc
// import * as grpc from 'grpc';
const product_grpc_pb_1 = require("./proto/product_grpc_pb");
const product_pb_1 = require("./proto/product_pb");
const log = debug('[Demo:GrpcServer]');
const ServerImpl = {
getProduct: (call, callback) => {
log(`[getProduct] Request: ${JSON.stringify(call.request.toObject())}`);
const vo = new product_pb_1.Product();
vo.setId(call.request.getId());
vo.setName('DefaultName');
vo.setCategory('DefaultCategory');
log(`[getProduct] Done: ${JSON.stringify(vo.toObject())}`);
callback(null, vo);
},
getProductViaCategory: (call) => {
log(`[getProductViaCategory] Request: ${JSON.stringify(call.request.toObject())}`);
for (let i = 1; i <= 10; i++) {
const vo = new product_pb_1.Product();
vo.setId(i);
vo.setName('DefaultName' + i);
vo.setCategory('CategoryName=' + call.request.getCategory());
log(`[getProductViaCategory] Write: ${JSON.stringify(vo.toObject())}`);
call.write(vo);
}
log('[getProductViaCategory] Done.');
call.end();
},
getBestProduct: (call, callback) => {
let lastOne;
call.on('data', (request) => {
log(`[getBestProduct] Request: ${JSON.stringify(request.toObject())}`);
lastOne = request;
});
call.on('end', () => {
const vo = new product_pb_1.Product();
vo.setId(lastOne.getId());
vo.setName('LastOneName');
vo.setCategory('LastOneCategory');
log(`[getBestProduct] Done: ${JSON.stringify(vo.toObject())}`);
callback(null, vo);
});
call.on('error', (e) => {
console.log(e);
});
},
getProducts: (call) => {
call.on('data', (request) => {
const vo = new product_pb_1.Product();
vo.setId(request.getId());
vo.setName('NameOf' + request.getId());
vo.setCategory('CategoryOf' + request.getId());
log(`[getProducts] Write: ${JSON.stringify(vo.toObject())}`);
call.write(vo);
});
call.on('end', () => {
log('[getProducts] Done.');
call.end();
});
call.on('error', (e) => {
console.log(e);
});
}
};
function startServer() {
const server = new grpc.Server();
// support grpc-js
server.addService(product_grpc_pb_1.ProductServiceService, ServerImpl);
// support grpc-js
// server.addService(ProductServiceService, new ServerImpl());
server.bindAsync('127.0.0.1:50051', grpc.ServerCredentials.createInsecure(), (e, port) => {
if (e)
throw e;
log(`Server started, listening: 127.0.0.1:${port}`);
});
}
startServer();
process.on('uncaughtException', (err) => {
log(`process on uncaughtException error: ${err}`);
});
process.on('unhandledRejection', (err) => {
log(`process on unhandledRejection error: ${err}`);
});
//# sourceMappingURL=server.js.map