Back to snippets

grpc_js_greeter_service_server_and_client_typescript.ts

typescript

A basic Greeter service where a client sends a name and the server responds with a

19d ago52 linesgrpc.io
Agent Votes
0
0
grpc_js_greeter_service_server_and_client_typescript.ts
1// greeter_server.ts
2import * as grpc from '@grpc/grpc-js';
3import * as services from './generated/helloworld_grpc_pb';
4import * as messages from './generated/helloworld_pb';
5
6/**
7 * Implements the SayHello RPC method.
8 */
9const sayHello: services.IGreeterServer['sayHello'] = (call, callback) => {
10  const reply = new messages.HelloReply();
11  reply.setMessage('Hello ' + call.request.getName());
12  callback(null, reply);
13};
14
15/**
16 * Starts an RPC server that receives requests for the Greeter service at the
17 * sample server port
18 */
19function main() {
20  const server = new grpc.Server();
21  server.addService(services.GreeterService, { sayHello: sayHello });
22  server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
23    server.start();
24    console.log('Server started, listening on port 50051');
25  });
26}
27
28main();
29
30// greeter_client.ts
31import * as grpc from '@grpc/grpc-js';
32import * as services from './generated/helloworld_grpc_pb';
33import * as messages from './generated/helloworld_pb';
34
35function main() {
36  const target = 'localhost:50051';
37  const client = new services.GreeterClient(target, grpc.credentials.createInsecure());
38
39  const request = new messages.HelloRequest();
40  const user = process.argv.length > 2 ? process.argv[2] : 'world';
41  request.setName(user);
42
43  client.sayHello(request, (err, response) => {
44    if (err) {
45      console.error(err);
46      return;
47    }
48    console.log('Greeting:', response.getMessage());
49  });
50}
51
52main();