-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.ts
55 lines (51 loc) · 1.55 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
import * as grpcIO from '../src/grpc-io'
import * as RouteGuide from './route-guide'
// debug
async function main() {
const serverBuilder = await new grpcIO.ServerBuilder('protos/route-guide.proto', 'routeguide', 'RouteGuide')
.buildService()
const server = await serverBuilder
.uu<RouteGuide.Point, RouteGuide.Feature>('GetFeature', async (req) => {
return {name: "hello world"}
})
.us<RouteGuide.Rectangle, RouteGuide.Feature>('ListFeatures', async (req) => {
let t = 5
return {
async next() {
if (t-- <= 0) return null
return {name: 't ' + t}
}
}
})
.su<RouteGuide.Point, RouteGuide.RouteSummary>('RecordRoute', async (reader) => {
let count = 0
while (true) {
const t = await reader.next()
if (!t) break
count++
}
return {feature_count: count}
})
.ss<RouteGuide.RouteNote, RouteGuide.RouteNote>('RouteChat', async (reader) => {
return {
async next() {
const message = await reader.next()
if (message) {
return {message: message.message + ' server', location: message.location}
} else {
return null
}
}
}
})
.build()
// await server.use(, new RouteGuideServiceImpl() as any)
console.log('start server...')
const p = await server.listen('127.0.0.1:5009')
// await new Promise(resolve => setTimeout(resolve, 5000))
// console.log('stop server...')
// await server.close()
}
main().catch(e => {
console.error(e.message, e)
})