-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathexample.ts
More file actions
56 lines (45 loc) · 1.47 KB
/
example.ts
File metadata and controls
56 lines (45 loc) · 1.47 KB
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
import { GrpcMockServer } from '../src/GrpcMockServer';
async function basicExample() {
// Create mock server
const server = new GrpcMockServer();
// Define service implementation
const implementations = {
ex1: (call: any, callback: any) => {
console.log('Received request:', call.request.msg);
callback(null, { msg: 'Hello from mock server!' });
}
};
// Add service to server
server.addService(
__dirname + '/example.proto',
'com.alenon.example',
'ExampleService',
implementations
);
// Start server
await server.start();
console.log(`Mock server listening at: ${server.serverAddress}`);
// Create client and make request
const grpc = require('@grpc/grpc-js');
const proto_loader = require('@grpc/proto-loader');
const { ProtoUtils } = require('../src/utils/ProtoUtils');
const pkgDef = grpc.loadPackageDefinition(
proto_loader.loadSync(__dirname + '/example.proto')
);
const proto = ProtoUtils.getProtoFromPkgDefinition('com.alenon.example', pkgDef);
const client = new proto.ExampleService(
'127.0.0.1:50777',
grpc.credentials.createInsecure()
);
// Make request
const response = await new Promise<any>((resolve, reject) => {
client.ex1({ msg: 'Hello from client!' }, (error: any, response: any) => {
error ? reject(error) : resolve(response);
});
});
console.log('Response:', response.msg);
// Stop server
await server.stop();
}
// Run example
basicExample().catch(console.error);