-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
49 lines (42 loc) · 1.05 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Load dependencies
const grpc = require("@grpc/grpc-js");
const protoLoader = require("@grpc/proto-loader");
// Path to our proto file
const PROTO_FILE = "./service_def.proto";
// Options needed for loading Proto file
const options = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
// Load Proto File
const pkgDefs = protoLoader.loadSync(PROTO_FILE, options);
// Load Definition into gRPC
const dogProto = grpc.loadPackageDefinition(pkgDefs);
// Create gRPC server
const server = new grpc.Server();
// Implement DogService
server.addService(dogProto.DogService.service, {
// Implement GetDog
GetDog: (input, callback) => {
try {
callback(null, { name: "Spot", age: 5 });
} catch (error) {
callback(error, null);
}
},
});
// Start the Server
server.bindAsync(
// Port to serve on
"127.0.0.1:3500",
// authentication settings
grpc.ServerCredentials.createInsecure(),
//server start callback
(error, port) => {
console.log(`listening on port ${port}`);
server.start();
}
);