Skip to content

Commit d8d3f84

Browse files
committed
update readme
1 parent 518cf9e commit d8d3f84

File tree

3 files changed

+39
-14
lines changed

3 files changed

+39
-14
lines changed

README.md

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
- [x] `client` unary calls
1414
- [x] multiplex calls
1515
- [x] `server` server streams
16-
- [ ] `client` server streams
16+
- [x] `client` server streams
1717
- [ ] context deadlines
1818
- [ ] logging interface
1919

@@ -36,6 +36,7 @@ package prohazko;
3636
3737
service Greeter {
3838
rpc SayHello (HelloRequest) returns (HelloReply) {}
39+
rpc ShoutHello (HelloRequest) returns (stream HelloReply) {}
3940
}
4041
4142
message HelloRequest {
@@ -52,12 +53,13 @@ message HelloReply {
5253
Service typings are not essential, but it's nice to have them
5354

5455
```sh
55-
$ deno run --allow-read https://deno.land/x/grpc_basic@0.3.3/gen/dts.ts ./greeter.proto > ./greeter.d.ts
56+
$ deno run --allow-read https://deno.land/x/grpc_basic@0.4.1/gen/dts.ts ./greeter.proto > ./greeter.d.ts
5657
```
5758

5859
```ts
5960
export interface Greeter {
6061
SayHello(request: HelloRequest): Promise<HelloReply>;
62+
ShoutHello(request: HelloRequest): AsyncGenerator<HelloReply>;
6163
}
6264

6365
export interface HelloRequest {
@@ -72,38 +74,60 @@ export interface HelloReply {
7274
### `server.ts`
7375

7476
```ts
75-
import { GrpcServer } from "https://deno.land/x/grpc_basic@0.3.3/server.ts";
77+
import { GrpcServer } from "https://deno.land/x/grpc_basic@0.4.1/server.ts";
7678
import { Greeter } from "./greeter.d.ts";
7779

7880
const port = 15070;
79-
const root = await Deno.readTextFile("./greeter.proto");
80-
8181
const server = new GrpcServer();
8282

83-
server.addService<Greeter>(root, {
83+
const protoPath = new URL("./greeter.proto", import.meta.url);
84+
const protoFile = await Deno.readTextFile(protoPath);
85+
86+
server.addService<Greeter>(protoFile, {
87+
8488
async SayHello({ name }) {
8589
const message = `hello ${name || "stranger"}`;
8690
return { message };
91+
},
92+
93+
async *ShoutHello({ name }) {
94+
for (const n of [0, 1, 2]) {
95+
const message = `hello ${name || "stranger"} #${n}`;
96+
yield { message };
97+
}
8798
}
8899
});
89100

90101
console.log(`gonna listen on ${port} port`);
91102
for await (const conn of Deno.listen({ port })) {
92103
server.handle(conn);
93104
}
105+
94106
```
95107

96108
### `client.ts`
97109

98110
```ts
99-
import { getClient } from "https://deno.land/x/grpc_basic@0.3.3/client.ts";
111+
import { getClient } from "https://deno.land/x/grpc_basic@0.4.1/client.ts";
100112
import { Greeter } from "./greeter.d.ts";
101113

102-
const port = 15070;
103-
const root = await Deno.readTextFile("./greeter.proto");
114+
const protoPath = new URL("./greeter.proto", import.meta.url);
115+
const protoFile = await Deno.readTextFile(protoPath);
104116

105-
const client = getClient<Greeter>({ port, root, serviceName: "Greeter" });
117+
const client = getClient<Greeter>({
118+
port: 15070,
119+
root: protoFile,
120+
serviceName: "Greeter",
121+
});
122+
123+
/* unary calls */
124+
console.log(await client.SayHello({ name: "unary #1" }));
125+
console.log(await client.SayHello({ name: "unary #2" }));
126+
127+
/* server stream */
128+
for await (const reply of client.ShoutHello({ name: "streamed" })) {
129+
console.log(reply);
130+
}
106131

107-
const resp = await client.SayHello({ name: "oleg" });
108-
console.log(resp);
132+
client.close();
109133
```

examples/client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const client = getClient<Greeter>({
1414
console.log(await client.SayHello({ name: "unary #1" }));
1515
console.log(await client.SayHello({ name: "unary #2" }));
1616

17+
/* server stream */
1718
for await (const reply of client.ShoutHello({ name: "streamed" })) {
1819
console.log(reply);
1920
}

server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,12 @@ export class GrpcServer {
180180
}
181181

182182
async handle(_conn: Deno.Conn) {
183-
console.log("got new connection");
183+
//console.log("got new connection");
184184

185185
const conn = new Http2Conn(_conn);
186186

187187
conn.c.on("stream", async (stream: Stream) => {
188-
console.log("got stream", stream.id);
188+
//console.log("got stream", stream.id);
189189

190190
const [headers, dataFrame] = await Promise.all([
191191
waitFor<Record<string, string>>(stream, "headers"),

0 commit comments

Comments
 (0)