public void Init(string url, FeatureHubRepository repository) { var config = new Configuration(uri: new UriBuilder(url).Uri); _eventSource = new EventSource(config); _eventSource.MessageReceived += (sender, args) => { // Console.WriteLine($"{args.EventName}:\n\t {args.Message.Data}"); SSEResultState?state; switch (args.EventName) { case "features": state = SSEResultState.Features; break; case "feature": state = SSEResultState.Feature; break; case "failure": state = SSEResultState.Failure; break; case "delete_feature": state = SSEResultState.Deletefeature; break; default: state = null; break; } if (state == null) { return; } repository.Notify(state.Value, args.Message.Data); if (state == SSEResultState.Failure) { _eventSource.Close(); } }; _eventSource.StartAsync(); }
public void Init(string url, FeatureHubRepository repository) { if (!_initialized) { _initialized = true; _url = url; _repository = repository; xFeatureHubHeader = _repository.ClientContext.GenerateHeader(); _repository.ClientContext.ContextUpdateHandler += (sender, header) => { if (header == xFeatureHubHeader || (_eventSource.ReadyState != ReadyState.Open && _eventSource.ReadyState != ReadyState.Connecting)) { return; } xFeatureHubHeader = header; _eventSource.Close(); Init(_url, _repository); }; } var headers = new Dictionary <string, string>(); if (xFeatureHubHeader != null) { headers.Add("x-featurehub", xFeatureHubHeader); } var config = new Configuration(uri: new UriBuilder(url).Uri, requestHeaders: headers); _eventSource = new EventSource(config); _eventSource.MessageReceived += (sender, args) => { SSEResultState?state; switch (args.EventName) { case "features": state = SSEResultState.Features; break; case "feature": state = SSEResultState.Feature; break; case "failure": state = SSEResultState.Failure; break; case "delete_feature": state = SSEResultState.Deletefeature; break; default: state = null; break; } if (state == null) { return; } repository.Notify(state.Value, args.Message.Data); if (state == SSEResultState.Failure) { _eventSource.Close(); } }; _eventSource.StartAsync(); }