1

我有一个用 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

4

0 回答 0