You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are using long-running server-streams where the server pushes updates to the frontend.
If the user's network connections change (e.g. due to entering / leaving a VPN), these long-running streams immediately stop - so far so good.
The Browser shows these streams as "failed" inside the network tab:
In addition to that, the console tab also shows the failed request:
Note though that the HTTP Status is 200.
The issue:
grpc-web does not propagate the error to our application. I'd expect both the "error" and "end"-callbacks to be triggered. Maybe even the "status"-callback.
(Or, at least, the "end"-callback). They are not.
As a consequence, these background-streams silently stop, and we can't inform the user or restart the streams.
Simplified code example:
this._alertServiceClient = new AlertServicePublicClient(/*...*/);
// ...
const req: Empty = new Empty();
this._alertStream = this._alertServiceClient.streamAlertChanges(req);
// None of these callbacks gets called if the stream stops with ERR_NETWORK_CHANGED:
this._alertStream.on('data', (response: AlertChanges) => {
console.log('DATA', status);
});
this._alertStream.on('error', (err: RpcError) => {
console.log('ERROR', err);
});
this._alertStream.on('end', () => {
console.log('END');
});
this._alertStream.on('status', (status) => {
console.log('STATUS', status);
});
this._store.dispatch(AlertChangesStarted());
Setup:
We are using Google Chrome, but it also happens for other browsers.
The backend starts with an nginX-server, that forwards all grpc-web calls to an enovy proxy. Envoy then translates to grpc and forwards to individual backend services.
The text was updated successfully, but these errors were encountered:
We are using long-running server-streams where the server pushes updates to the frontend.
If the user's network connections change (e.g. due to entering / leaving a VPN), these long-running streams immediately stop - so far so good.
The Browser shows these streams as "failed" inside the network tab:
In addition to that, the console tab also shows the failed request:
Note though that the HTTP Status is 200.
The issue:
grpc-web does not propagate the error to our application. I'd expect both the "error" and "end"-callbacks to be triggered. Maybe even the "status"-callback.
(Or, at least, the "end"-callback). They are not.
As a consequence, these background-streams silently stop, and we can't inform the user or restart the streams.
Simplified code example:
Setup:
We are using Google Chrome, but it also happens for other browsers.
The backend starts with an nginX-server, that forwards all grpc-web calls to an enovy proxy. Envoy then translates to grpc and forwards to individual backend services.
The text was updated successfully, but these errors were encountered: