From bca630832ecb4038e1069929ed988a2c7aa3bf80 Mon Sep 17 00:00:00 2001 From: Zbigniew Mandziejewicz Date: Mon, 17 Dec 2018 15:51:27 +0100 Subject: [PATCH] Emit status event on empty stream response --- .../net/grpc/web/grpcwebclientreadablestream.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/javascript/net/grpc/web/grpcwebclientreadablestream.js b/javascript/net/grpc/web/grpcwebclientreadablestream.js index a4149a7f..31acc329 100644 --- a/javascript/net/grpc/web/grpcwebclientreadablestream.js +++ b/javascript/net/grpc/web/grpcwebclientreadablestream.js @@ -119,6 +119,16 @@ const GrpcWebClientReadableStream = function(genericTransportInterface) { if (!contentType) return; contentType = contentType.toLowerCase(); + var grpcStatusCode = self.xhr_.getStreamingResponseHeader(GRPC_STATUS); + var grpcStatusMessage = self.xhr_.getStreamingResponseHeader(GRPC_STATUS_MESSAGE); + if (grpcStatusCode && self.onStatusCallback_) { + self.onStatusCallback_({ + code: Number(grpcStatusCode), + details: grpcStatusMessage, + metadata: undefined, + }); + } + if (googString.startsWith(contentType, 'application/grpc-web-text')) { var responseText = self.xhr_.getResponseText(); var newPos = responseText.length - responseText.length % 4; @@ -155,8 +165,8 @@ const GrpcWebClientReadableStream = function(genericTransportInterface) { messages[i][FrameType.TRAILER][pos]); } var trailers = self.parseHttp1Headers_(trailerString); - var grpcStatusCode = StatusCode.OK; - var grpcStatusMessage = ""; + grpcStatusCode = StatusCode.OK; + grpcStatusMessage = ""; if (GRPC_STATUS in trailers) { grpcStatusCode = trailers[GRPC_STATUS]; }