aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Tim Emiola <tbetbetbe@users.noreply.github.com>2015-02-19 13:59:30 -0800
committerGravatar Tim Emiola <tbetbetbe@users.noreply.github.com>2015-02-19 13:59:30 -0800
commit09fce0fb39baf33e43cd69f1ef17ca28f1314041 (patch)
treede0ed85ff4551b6a05a2888d47522fb9742b0946
parent8e3e09e701d28188d29e07d8f373c06fd3ab7210 (diff)
parentec8fa8339ed06df87c529f4900a03d8d234d0116 (diff)
Merge pull request #28 from murgatroid99/node_hello_world
Node hello world
-rw-r--r--node/.gitignore3
-rw-r--r--node/README.md33
-rw-r--r--node/greeter_client.js52
-rw-r--r--node/greeter_server.js63
-rw-r--r--node/helloworld.proto50
-rw-r--r--node/package.json7
6 files changed, 208 insertions, 0 deletions
diff --git a/node/.gitignore b/node/.gitignore
new file mode 100644
index 0000000000..3d06f5db7b
--- /dev/null
+++ b/node/.gitignore
@@ -0,0 +1,3 @@
+*~
+node_modules
+npm-debug.log \ No newline at end of file
diff --git a/node/README.md b/node/README.md
new file mode 100644
index 0000000000..57dc83ee3f
--- /dev/null
+++ b/node/README.md
@@ -0,0 +1,33 @@
+# gRPC Node.js Helloworld
+
+## INSTALLATION REQUIREMENTS
+
+This requires Node 10.x or greater.
+
+## INSTALL
+
+ - Clone this repository
+ - Follow the instructions in [INSTALL](https://github.com/grpc/grpc/blob/master/INSTALL) to install the gRPC C core.
+ - Run `npm install` to install dependencies
+ - If `grpc` is not found, clone the [gRPC](https://github.com/grpc/grpc) repository and run `npm install path/to/grpc/src/node`.
+
+## USAGE
+
+ - Run the server
+
+ ```sh
+ $ # from this directory
+ $ nodejs ./greeter_server.js &
+ ```
+
+ - Run the client
+
+ ```sh
+ $ # from this directory
+ $ nodejs ./greeter_client.js
+ ```
+
+## NOTE
+
+This directory has a copy of `helloworld.proto` because it currently depends on
+some Protocol Buffer 2.0 syntax that is deprecated in Protocol Buffer 3.0.
diff --git a/node/greeter_client.js b/node/greeter_client.js
new file mode 100644
index 0000000000..ab7050ab21
--- /dev/null
+++ b/node/greeter_client.js
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var PROTO_PATH = __dirname + '/helloworld.proto';
+
+var grpc = require('grpc');
+var hello_proto = grpc.load(PROTO_PATH).helloworld;
+
+function main() {
+ var client = new hello_proto.Greeter('localhost:50051');
+ var user;
+ if (process.argv.length >= 3) {
+ user = process.argv[2];
+ } else {
+ user = 'world';
+ }
+ client.sayHello({name: user}, function(err, response) {
+ console.log('Greeting:', response.message);
+ });
+}
+
+main();
diff --git a/node/greeter_server.js b/node/greeter_server.js
new file mode 100644
index 0000000000..6d4183c0ce
--- /dev/null
+++ b/node/greeter_server.js
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var PROTO_PATH = __dirname + '/helloworld.proto';
+
+var grpc = require('grpc');
+var hello_proto = grpc.load(PROTO_PATH).helloworld;
+
+var Server = grpc.buildServer([hello_proto.Greeter.service]);
+
+/**
+ * Implements the sayHello RPC method.
+ */
+function sayHello(call, callback) {
+ callback(null, {message: 'Hello ' + call.request.name});
+}
+
+/**
+ * Starts an RPC server that receives requests for the Greeter service at the
+ * sample server port
+ */
+function main() {
+ var server = new Server({
+ "helloworld.Greeter": {
+ sayHello: sayHello
+ }
+ });
+
+ server.bind('0.0.0.0:50051');
+ server.listen();
+}
+
+main();
diff --git a/node/helloworld.proto b/node/helloworld.proto
new file mode 100644
index 0000000000..e1f5700725
--- /dev/null
+++ b/node/helloworld.proto
@@ -0,0 +1,50 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+option java_package = "ex.grpc";
+
+package helloworld;
+
+// The greeting service definition.
+service Greeter {
+ // Sends a greeting
+ rpc sayHello (HelloRequest) returns (HelloReply) {}
+}
+
+// The request message containing the user's name.
+message HelloRequest {
+ optional string name = 1;
+}
+
+// The response message containing the greetings
+message HelloReply {
+ optional string message = 1;
+}
diff --git a/node/package.json b/node/package.json
new file mode 100644
index 0000000000..435654034f
--- /dev/null
+++ b/node/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "grpc-greeter",
+ "version": "0.1.0",
+ "dependencies": {
+ "grpc" : "~0.2.0"
+ }
+}