-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathserver.ts
75 lines (67 loc) · 2.04 KB
/
server.ts
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import * as grpc from '@grpc/grpc-js';
import { ExampleService, IExampleServer } from './proto/example_grpc_pb';
import { ClientMessage, ServerMessage } from './proto/example_pb';
const host = '0.0.0.0:9090';
const exampleServer: IExampleServer = {
unaryCall(
call: grpc.ServerUnaryCall<ClientMessage, ServerMessage>,
callback: grpc.sendUnaryData<ServerMessage>
) {
if (call.request) {
console.log(
`(server) Got client message: ${call.request.getClientMessage()}`
);
}
const serverMessage = new ServerMessage();
serverMessage.setServerMessage('Message from server');
callback(null, serverMessage);
},
serverStreamingCall(
call: grpc.ServerWritableStream<ClientMessage, ServerMessage>
) {
const serverMessage = new ServerMessage();
serverMessage.setServerMessage('Message from server');
call.write(serverMessage);
},
clientStreamingCall(
call: grpc.ServerReadableStream<ClientMessage, ServerMessage>
) {
call.on('data', (clientMessage: ClientMessage) => {
console.log(
`(server) Got client message: ${clientMessage.getClientMessage()}`
);
});
},
bidirectionalStreamingCall(
call: grpc.ServerDuplexStream<ClientMessage, ServerMessage>
) {
call.on('data', (clientMessage: ClientMessage) => {
console.log(
`(server) Got client message: ${clientMessage.getClientMessage()}`
);
});
const serverMessage = new ServerMessage();
serverMessage.setServerMessage('Message from server');
call.write(serverMessage);
},
};
function getServer(): grpc.Server {
const server = new grpc.Server();
server.addService(ExampleService, exampleServer);
return server;
}
if (require.main === module) {
const server = getServer();
server.bindAsync(
host,
grpc.ServerCredentials.createInsecure(),
(err: Error | null, port: number) => {
if (err) {
console.error(`Server error: ${err.message}`);
} else {
console.log(`Server bound on port: ${port}`);
server.start();
}
}
);
}