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