Node example

This commit is contained in:
Eden Kirin
2023-03-20 22:00:13 +01:00
parent a0d2d1cb7f
commit 1876158d9d
21 changed files with 556 additions and 13 deletions

View File

@ -1,24 +1,51 @@
const messages = require("./stubs/serve_currenttime_pb");
const services = require("./stubs/serve_currenttime_grpc_pb");
const grpc = require("@grpc/grpc-js");
const PROTO_PATH = "../protos/serve_currenttime.proto";
const protoLoader = require("@grpc/proto-loader");
var utc = require("dayjs/plugin/utc");
const timezone = require("dayjs/plugin/timezone");
const dayjs = require("dayjs");
dayjs.extend(utc);
dayjs.extend(timezone);
const SERVE_CURRENTTIME_HOST = "localhost";
const SERVE_CURRENTTIME_PORT = 50000;
function getCurrentTime(call, callback) {
var response = new messages.GetCurrentTimeResponse();
response.setMessage("Hello " + call.request.getName());
callback(null, response);
const options = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
function getCurrentTime(request, callback) {
const timezone = request.timezone;
const now = dayjs().tz(timezone);
callback(null, {
hours: now.hour(),
minutes: now.minute(),
seconds: now.second(),
milliseconds: now.millisecond(),
formatted_time: now.format("YYYY-MM-DDTHH:mm:ss.SSS"),
});
}
function main() {
console.log(`Starting server on ${SERVE_CURRENTTIME_HOST}:${SERVE_CURRENTTIME_PORT}`);
var server = new grpc.Server();
server.addService(services.ServeCurrentTimeService, { getCurrentTime: getCurrentTime });
var packageDefinition = protoLoader.loadSync(PROTO_PATH, options);
const serveCurrentTimeProto = grpc.loadPackageDefinition(packageDefinition).serve_currenttime;
const server = new grpc.Server();
server.addService(serveCurrentTimeProto.ServeCurrentTimeService.service, {
getCurrentTime: getCurrentTime,
});
server.bindAsync(
`${SERVE_CURRENTTIME_HOST}:${SERVE_CURRENTTIME_PORT}`,
grpc.ServerCredentials.createInsecure(),
() => {
console.log(`Starting server on ${SERVE_CURRENTTIME_HOST}:${SERVE_CURRENTTIME_PORT}`);
server.start();
}
);