Node example
This commit is contained in:
@ -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();
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user