在Node.js gRPC客户端中使用双向流回调的响应

时间:2020-04-08 00:57:07

标签: node.js grpc grpc-node grpc-js

我有一个用Go编写并在unix域套接字上运行的grpc服务器。我为此编写了一个nodeJS客户端。由于grpc-node不支持Unix套接字,因此我不得不使用@grpc/grpc-js

现在我面临的问题是我需要对从服务器返回的响应执行一些操作。我目前有这个,它的工作原理。但是,有没有一种更清洁/更精细的方式来实现这一目标?

    let appEncryptionDef = protoLoader.loadSync(__dirname + '../../../../protos/appencryption.proto', {
        keepCase: true,
        defaults: true,
        oneofs: true
    });
    let appEncryptionProto = grpc.loadPackageDefinition(appEncryptionDef);
    let client = new appEncryptionProto.asherah.apps.server.AppEncryption(`unix://${socket}`, grpc.credentials.createInsecure());
    let call = client.session();

    call.on('data', function (sessionResponse) {
        switch (sessionResponse.response) {
            case 'x':
                data = parse_server_response;
                call.write(data);
                call.end();

                break;
            case 'error_response':
                console.log('error received: ' + sessionResponse.error_response.message);

                break;
        }
    });

是否有更好的方法?我看过grpc-caller库,但是将其与@grpc/grpc-js一起使用会给我带来Channel's second argument must be a ChannelCredentials错误。

这里是我到目前为止写过的客户:https://github.com/godaddy/asherah/blob/servicelayer_node/server/samples/clients/node/appencryption_client.js

0 个答案:

没有答案