request method
A function called when a request reaches this Link
Implementation
@override
Stream<Response> request(Request request, [forward]) async* {
final connectionStateController = StreamController<_ActionCableEvent>();
final response = StreamController<Response>();
connectionStateController.stream.listen((event) {
switch (event.state) {
case ConnectionState.connected:
_subscribed(event.request, response);
break;
case ConnectionState.disconnected:
case ConnectionState.cannotConnect:
case ConnectionState.connectionLost:
_retryTimer ??= Timer(retryDuration, () {
_connect(event.request, connectionStateController);
_retryTimer!.cancel();
_retryTimer = null;
});
break;
default:
}
});
_connect(request, connectionStateController);
response.onCancel = () {
_cable?.disconnect();
_retryTimer?.cancel();
connectionStateController.close();
};
yield* response.stream;
}