Comparing version 0.1.1 to 0.1.2
{ | ||
"name": "grpc-kit", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "use grpc more simply", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
110
README.md
@@ -73,2 +73,112 @@ # grpc-kit | ||
## use stream | ||
### proto | ||
```proto | ||
syntax="proto3"; | ||
package stream_greeter; | ||
service StreamGreeter { | ||
rpc ClientStreamHello(stream Message) returns(Message) {} | ||
rpc ServerStreamHello(Message) returns(stream Message) {} | ||
rpc MutualStreamHello (stream Message) returns (stream Message) {} | ||
} | ||
message Message { | ||
string message = 1; | ||
} | ||
``` | ||
### Server | ||
```js | ||
const {createServer} = require("grpc-kit"); | ||
const server = createServer(); | ||
server.use({ | ||
protoPath: "/path/to/stream_greeter.proto"), | ||
packageName: "stream_greeter", | ||
serviceName: "StreamGreeter", | ||
routes: { | ||
clientStreamHello: (call, callback) => { | ||
call.on("data", (chunk) => { | ||
//exec when client wrote message | ||
console.log(chunk.message); | ||
}); | ||
call.on("end", (chunk) => { | ||
callback(null, { message: "Hello! I'm fine, thank you!" }) | ||
}); | ||
}, | ||
serverStreamHello: (call) => { | ||
console.log(call.request.message); | ||
call.write({ message: "Hello!" }); | ||
call.write({ message: "I'm fine, thank you" }); | ||
call.end(); | ||
}, | ||
mutualStreamHello: (call) => { | ||
call.on("data", (chunk) => { | ||
//exec when client wrote message | ||
console.log(chunk.message); | ||
if(chunk.message === "Hello!"){ | ||
call.write({ message: "Hello!" }); | ||
} else if(chunk.message === "How are you?"){ | ||
call.write({ message: "I'm fine, thank you" }); | ||
} else { | ||
call.write({ message: "pardon?" }); | ||
} | ||
}); | ||
call.on("end", (chunk) => { | ||
call.end(); | ||
}); | ||
} | ||
} | ||
}); | ||
server.listen("0.0.0.0:50051"); | ||
``` | ||
### Client | ||
```js | ||
const {createClient} = require("grpc-kit"); | ||
const client = createClient({ | ||
protoPath: "/path/to/stream_greeter.proto", | ||
packageName: "stream_greeter", | ||
serviceName: "StreamGreeter" | ||
}, "0.0.0.0:50051"); | ||
``` | ||
#### client stream | ||
```js | ||
const call = client.clientStreamHello((err, res) => { | ||
if(err) throw err; | ||
console.log(res.message); | ||
}); | ||
call.write({ message: "Hello!" }); | ||
call.write({ message: "How are you?" }); | ||
call.end(); | ||
``` | ||
#### server stream | ||
```js | ||
const call = client.serverStreamHello({ message: "Hello! How are you?" }); | ||
call.on("data", (chunk) => { | ||
console.log(chunk.message); | ||
}); | ||
call.on("end", () => { | ||
//exec when server streaming ended. | ||
}); | ||
``` | ||
#### mutual stream | ||
```js | ||
const call = client.mutualStreamHello(); | ||
call.on("data", (chunk) => { | ||
console.log(chunk.message); | ||
}); | ||
call.on("end", () => { | ||
//exec when server streaming ended. | ||
}); | ||
call.write({ message: "Hello!" }); | ||
call.write({ message: "How are you?" }); | ||
call.end(); | ||
``` | ||
## api | ||
@@ -75,0 +185,0 @@ ### createServer(): GrpcServer |
@@ -18,2 +18,28 @@ const path = require("path"); | ||
return { message: `Goodbye, ${call.request.name}` }; | ||
}, | ||
niceToMeetYou: (call) => { | ||
call.write({ message: `Hi, ${call.request.name}.` }); | ||
call.write({ message: "I am Greeter." }); | ||
call.write({ message: "Nice to meet you!" }); | ||
call.end(); | ||
}, | ||
cheerUp: (call, callback) => { | ||
call.on("data", (grumbleChunk) => {}); | ||
call.on("end", () => { | ||
callback(null, { message: "Cheer up. Tommorow is Friday." }); | ||
}); | ||
}, | ||
chat: (call) => { | ||
call.on("data", (chunk) => { | ||
if(chunk.message === "Hi") { | ||
call.write({ message: "Hi" }); | ||
} else if (chunk.message === "How are you?"){ | ||
call.write({ message: "I'm fine!" }); | ||
} else { | ||
call.write({ message: "pardon?" }); | ||
} | ||
}); | ||
call.on("end", () => { | ||
call.end(); | ||
}); | ||
} | ||
@@ -35,7 +61,7 @@ } | ||
it("says hello", (done) => { | ||
client.hello({ name: "Jack" }, (err, {message}) => { | ||
client.hello({ name: "Jack" }, (err, res) => { | ||
if (err) { | ||
assert(err); | ||
} else { | ||
assert(message === "Hello, Jack"); | ||
assert(res.message === "Hello, Jack"); | ||
}; | ||
@@ -47,7 +73,7 @@ done(); | ||
it("says goodbye", (done) => { | ||
client.goodbye({ name: "John" }, (err, {message}) => { | ||
client.goodbye({ name: "John" }, (err, res) => { | ||
if (err) { | ||
assert(err); | ||
} else { | ||
assert(message === "Goodbye, John"); | ||
assert(res.message === "Goodbye, John"); | ||
}; | ||
@@ -57,3 +83,45 @@ done(); | ||
}); | ||
it("says nice to meet you", (done) => { | ||
const call = client.niceToMeetYou({ name: "Linda" }); | ||
const messages = []; | ||
call.on("data", (chunk) => { | ||
messages.push(chunk.message); | ||
}); | ||
call.on("end", () => { | ||
assert.deepEqual(messages, ["Hi, Linda.", "I am Greeter.", "Nice to meet you!"]); | ||
done(); | ||
}); | ||
}); | ||
it("cheers up", (done) => { | ||
const call = client.cheerUp((err, res) => { | ||
if(err){ | ||
assert(err); | ||
}else{ | ||
assert(res.message === "Cheer up. Tommorow is Friday."); | ||
} | ||
done(); | ||
}); | ||
call.write({ message: "Phew..." }); | ||
call.write({ message: "I'm so tired..." }); | ||
call.write({ message: "I want to quit my job..." }); | ||
call.end(); | ||
}); | ||
it("chats", (done) => { | ||
const call = client.chat(); | ||
const messages = []; | ||
call.on("data", (chunk) => { | ||
messages.push(chunk.message); | ||
}); | ||
call.on("end", () => { | ||
assert.deepEqual(messages, ["Hi", "I'm fine!"]); | ||
done(); | ||
}); | ||
call.write({ message: "Hi" }); | ||
call.write({ message: "How are you?" }); | ||
call.end(); | ||
}); | ||
after((done) => { | ||
@@ -60,0 +128,0 @@ server.close(false, () => { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16477
12
274
222