I updated everything:

wander@peniche:~/control-web$ npm list --depth=0 2>/dev/null
[email protected] /home/wander/control-web
├── @grpc/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

I still see the same behavior.

If I change my server.,js:

function main() {
    var server = new grpc.Server();
    server.addService(test.Greeter.service, {
        sayHello: SayHello,
        sayHelp: SayHelp
    });
    //console.dir(util.inspect(server,  showHidden=false, depth=5, 
colorize=false));
    server.bind(argv.h, grpc.ServerCredentials.createInsecure());
    server.start();
}

Restart, ... I see the same behavior.


On Monday, March 11, 2019 at 12:41:14 PM UTC-4, Michael Lumish wrote:
>
> Can you try updating your dependencies? I just tried running the given 
> code with the latest versions of grpc and @grpc/proto-loader and it worked. 
> There was previously an issue that the library would not accept method 
> names with the same casing as in the original proto file, but that was 
> fixed a while ago.
>
> As a side note, the `keepCase` option in `proto-loader` affects message 
> field names. If it is not set, the field names are transformed to camel 
> case.
>
> On Mon, Mar 11, 2019 at 8:14 AM 'Mya Pitzeruse' via grpc.io <
> [email protected] <javascript:>> wrote:
>
>> On the server side, try using lowercase names instead of title case:
>>
>>     server.addService(test.Greeter.service, {
>>         sayHello: SayHello,
>>         sayHelp: SayHelp
>>     });
>>
>> I would assume that using "keepCase: true" meant that they would require 
>> these to be the same as the proto. But here's an example where I use the 
>> same loader semantic and the same casing: 
>>
>> https://github.com/mjpitz/des/blob/master/api/extractor.proto#L19
>> https://github.com/mjpitz/des/blob/master/api/extractor.js#L8
>>
>> And all of my service methods are use camel case instead of the case I 
>> used in the proto file:
>>
>> https://github.com/mjpitz/des/blob/master/src/service/unasyncify.ts#L9
>>
>>
>> On Sat, Mar 9, 2019 at 10:08 AM Rob Cecil <[email protected] 
>> <javascript:>> wrote:
>>
>>> I'm experienced with Grpc - having built iOS/ObjC front-end and C# 
>>> backend over a two year period (a Grpc project consisting of a main proto 
>>> with a service that has 27 methods, and about a dozen supporting protos for 
>>> message definitions).
>>>
>>> I am however, not super experienced with web development, so I am a 
>>> little frustrated atm, trying to get simple things to work with Grpc-node.  
>>> I started with something simple - the HelloWorld example and modified it 
>>> from there. 
>>>
>>> Here is my current "test.proto":
>>>
>>> syntax = "proto3";
>>>
>>>
>>> package helloworld;
>>>
>>>
>>> service Greeter {
>>>     rpc SayHello(FooBarRequest) returns (FooBarReply);
>>>     rpc SayHelp(FooBarRequest) returns (FooBarReply);
>>> }
>>>
>>>
>>> message FooBarRequest {
>>>     string name = 1;
>>> }
>>>   
>>> message FooBarReply {
>>>     string message = 1;
>>> }
>>>
>>>
>>> server.js:
>>>
>>> const _ = require('lodash');
>>> const grpc = require('grpc');
>>> const protoLoader = require('@grpc/proto-loader');
>>>
>>>
>>> const argv = require("minimist")(process.argv.slice(2));
>>> console.dir(argv);
>>>
>>>
>>> if (!argv.h) {
>>>     console.log("Please start server.js with -h xx.xx.xx.xx:xxxx");
>>>     process.exit(1);
>>> }
>>> console.log(`Starting server.js on : ${argv.h}`);
>>>
>>>
>>> const PROTOS_PATH = __dirname + '/../protos/';
>>> const BESERVICE_PROTO_PATH = PROTOS_PATH + 'test.proto';
>>>
>>>
>>> const beDefinition = protoLoader.loadSync(
>>>     BESERVICE_PROTO_PATH,
>>>     {keepCase: true,
>>>      longs: String,
>>>      enums: String,
>>>      defaults: true,
>>>      oneofs: true
>>>     });
>>>
>>>
>>> const test = grpc.loadPackageDefinition(beDefinition).helloworld;
>>>
>>>
>>> function SayHello(call, callback) {
>>>     callback(null, {message: 'Hello ' + call.request.name});
>>> }
>>>
>>>
>>> function SayHelp(call, callback) {
>>>     callback(null, {message: 'Help! ' + call.request.name});
>>> }
>>>
>>>
>>> function main() {
>>>     var server = new grpc.Server();
>>>     server.addService(test.Greeter.service, {
>>>         SayHello: SayHello,
>>>         SayHelp: SayHelp
>>>     });
>>>     server.bind(argv.h, grpc.ServerCredentials.createInsecure());
>>>     server.start();
>>> }
>>>   
>>> main();
>>>
>>>
>>>
>>>
>>>
>>> client.js:
>>>
>>> const grpc = require('grpc');
>>> const util = require('util')
>>> const protoLoader = require('@grpc/proto-loader');
>>> const argv = require("minimist")(process.argv.slice(2));
>>> console.dir(argv);
>>>
>>>
>>> if (!argv.h) {
>>>     console.log("Please start with -h xx.xx.xx.xx:xxxx");
>>>     process.exit(1);
>>> }
>>> console.log(`Starting Node backend client on : ${argv.h}`);
>>>
>>>
>>> const PROTOS_PATH = __dirname + '/../protos/';
>>> const BESERVICE_PROTO_PATH = PROTOS_PATH + 'test.proto';
>>>
>>>
>>> const beDefinition = protoLoader.loadSync(
>>>     BESERVICE_PROTO_PATH,
>>>     {keepCase: true,
>>>      longs: String,
>>>      enums: String,
>>>      defaults: true,
>>>      oneofs: true
>>>     });
>>>
>>>
>>> const test = grpc.loadPackageDefinition(beDefinition).helloworld;
>>>
>>>
>>> function main() {
>>>     var client = new test.Greeter(argv.h, grpc.credentials.
>>> createInsecure());
>>>     
>>>     client.SayHello({ name: 'Darth' }, {}, (err, response) => {
>>>         if (err) {
>>>             console.error("error calling SayHello", err);
>>>             return
>>>         }
>>>         console.log('Greeting:', response.message);
>>>
>>>
>>>         client.SayHelp({ name: 'Darth' }, {}, (err, response) => {
>>>             if (err) {
>>>                 console.error("error calling SayHelp", err);
>>>                 return
>>>             }
>>>             console.log('Help! ', response.message);
>>>         });
>>>     });
>>>   }
>>>   
>>>   main();
>>>
>>>
>>> I run the client and server on the same machine, using the same command 
>>> line argument for the same host & port.
>>>
>>> Can anyone explain why I get "RPC method not implemented" on the second 
>>> method defined in the  Greeter service above?
>>>
>>> wander@peniche:~/control-web/js$ !1186
>>> node server.js -h 172.16.0.168:9090 &
>>> [1] 57465
>>> wander@peniche:~/control-web/js$ { _: [], h: '172.16.0.168:9090' }
>>> Starting server.js on : 172.16.0.168:9090
>>>
>>>
>>> wander@peniche:~/control-web/js$ !1187
>>> node backendservice-node-client.js -h 172.16.0.168:9090
>>> { _: [], h: '172.16.0.168:9090' }
>>> Starting Node backend client on : 172.16.0.168:9090
>>> Greeting: Hello! Darth
>>> error calling SayHelp { Error: 12 UNIMPLEMENTED: RPC method not 
>>> implemented /helloworld.Greeter/SayHelp
>>>     at Object.exports.createStatusError (/home/wander/control-web/
>>> node_modules/grpc/src/common.js:91:15)
>>>     at Object.onReceiveStatus (/home/wander/control-web/node_modules/
>>> grpc/src/client_interceptors.js:1204:28)
>>>     at InterceptingListener._callNext (/home/wander/control-web/
>>> node_modules/grpc/src/client_interceptors.js:568:42)
>>>     at InterceptingListener.onReceiveStatus (/home/wander/control-web/
>>> node_modules/grpc/src/client_interceptors.js:618:8)
>>>     at callback (/home/wander/control-web/node_modules/grpc/src/
>>> client_interceptors.js:845:24)
>>>   code: 12,
>>>   metadata: Metadata { _internal_repr: {} },
>>>   details: 'RPC method not implemented /helloworld.Greeter/SayHelp' }
>>>
>>>
>>> If i remove the SayHelp method in the proto and update the client & 
>>> server code, it works fine.
>>>
>>> THANKS
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "grpc.io" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] <javascript:>.
>>> To post to this group, send email to [email protected] 
>>> <javascript:>.
>>> Visit this group at https://groups.google.com/group/grpc-io.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/grpc-io/3c7c48bc-3612-4c7e-9b30-9a30e47d1286%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/grpc-io/3c7c48bc-3612-4c7e-9b30-9a30e47d1286%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>> -- 
>>
>> Mya Pitzeruse
>>
>> Senior Software Engineer - Service Infrastructure
>>
>> Gender Pronouns: She, Her, Hers
>>
>> [email protected] <javascript:>
>>
>>
>> Indeed - We help people get jobs.
>>
>> Indeed.com <http://www.indeed.com/>
>>
>> Facebook <http://www.facebook.com/indeed>  |   
>> <http://www.twitter.com/indeed>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/363cc41a-c21a-4958-9fba-79f594c3d585%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to