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