Latest version has caused @google-cloud/pubsub fail to connect over a proxy connection.
Snapshot of error:
2020-08-29T10:52:45.340Z | proxy | Successfully connected to pubsub.googleapis.c
om:443 through proxy 172.16.52.252:443
2020-08-29T10:52:45.370Z | subchannel | 172.16.52.252:443 CONNECTING -> TRANSIEN
T_FAILURE
2020-08-29T10:52:45.372Z | pick_first | CONNECTING -> TRANSIENT_FAILURE
2020-08-29T10:52:45.373Z | resolving_load_balancer | dns:172.16.52.252:443 CONNE
CTING -> TRANSIENT_FAILURE
2020-08-29T10:52:45.375Z | channel | Pick result: TRANSIENT_FAILURE subchannel:
undefined status: 14 No connection established
2020-08-29T10:52:45.377Z | call_stream | [11] cancelWithStatus code: 14 details:
"No connection established"
2020-08-29T10:52:45.379Z | call_stream | [11] ended with status: code=14 details
="No connection established"
2020-08-29T10:52:45.381Z | connectivity_state | dns:172.16.52.252:443 CONNECTING
-> TRANSIENT_FAILURE
Before proposed fix:
static getDefaultAuthority(target) {
return target.path; // this returns "pubsub.googleapis.com:443"
}
After proposed fix:
static getDefaultAuthority(target) {
const hostPort = uri_parser_1.splitHostPort(target.path); // target.path is "pubsub.googleapis.com:443"
if (hostPort !== null) {
return hostPort.host; // this returns "pubsub.googleapis.com"
}
else {
throw new Error(`Failed to parse target ${uri_parser_1.uriToString(target)}`);
}
}
gRPC on Node.js
Implementations
For a comparison of the features available in these two libraries, see this document
C-based Client and Server
Directory: packages/grpc-native-core (lives in the grpc@1.24.x branch) (see here for installation information)
npm package: grpc.
This is the existing, feature-rich implementation of gRPC using a C++ addon. It works on all LTS versions of Node.js on most platforms that Node.js runs on.
Pure JavaScript Client
Directory: packages/grpc-js
npm package: @grpc/grpc-js
This library implements the core functionality of gRPC purely in JavaScript, without a C++ addon. It works on the latest version of Node.js on all platforms that Node.js runs on.
Other Packages
gRPC Protobuf Loader
Directory: packages/proto-loader
npm package: @grpc/proto-loader
This library loads .proto files into objects that can be passed to the gRPC libraries.
gRPC Tools
Directory: packages/grpc-tools
npm package: grpc-tools
Distribution of protoc and the gRPC Node protoc plugin for ease of installation with npm.
gRPC Health Check Service
Directory: packages/grpc-health-check
npm package: grpc-health-check
Health check service for gRPC servers.