Hi,
The current node.js module doesn't allow one to pass a Channel object to
build a client, but it does allow one to access a channel via
grpc.getClientChannel(…) and .$channel on a client object.
In lieu of an exposed interface to pass a connection or channel, I tried
out the following hack to allow two clients to share the same channel.
function combineChannels(aClient, bClient) {
var aChan = grpc.getClientChannel(aClient);
var bChan = grpc.getClientChannel(bClient);
if (aChan.getTarget() != bChan.getTarget()) {
throw "different targets: " + " (a) " + aChan.getTarget() + "; (b)
" + bChan.getTarget();
}
if (aChan.getConnectivityState() != 0) {
throw "bad connectivity state (a): " + aChan.getConnectivityState();
}
if (bChan.getConnectivityState() != 0) {
throw "bad connectivity state (b): " + bChan.getConnectivityState();
}
bChan.close();
bClient.$channel = aChan;
}
Observing with nettop (macOS) shows only 1 connection when hack is in use,
and 1 per client otherwise. It seems to work as expected, but is any danger
in doing so? Is there a better way to accomplish this in node.js?
FWIW my goal is to have a healthcheck client keep the TCP socket alive in
case a LB or FW wants to close idle-long-running connections.
Thanks in advance,
– Franco
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/a5f6c9ea-48e4-4d68-a5ab-322c55c15f21%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.