55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
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;
|
|
|
|
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() {
|
|
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();
|
|
}
|
|
);
|
|
}
|
|
|
|
main();
|