Skip to content

Releases: launchdarkly/dotnet-eventsource

4.0.0

22 Feb 19:40

Choose a tag to compare

[4.0.0] - 2021-02-22

Starting with this version, the API documentation for the latest release is viewable at https://launchdarkly.github.io/dotnet-eventsource.

The 4.x major version of LaunchDarkly.EventSource will be used in the upcoming major version releases of LaunchDarkly's .NET-based SDKs. This release streamlines the API, updates platform compatibility, and improves performance.

Added:

  • EventSource.Restart: this method allows the caller to trigger a connection restart even if there was not an error on the stream.
  • MessageEvent.Name: previously, the event name was only available as a property of MessageReceivedEventArgs.
  • ConfigurationBuilder.DefaultEncoding: sets the character encoding to use for parsing the stream data if the server did not specify an encoding in its Content-Type.
  • ConfigurationBuilder.PreferDataAsUtf8Bytes: an optional mode in which EventSource will read the data: property of events as a raw UTF-8 byte array (assuming the stream encoding is UTF-8) to avoid unnecessarily allocating a UTF-16 string. This is meant as an optimization for applications that will be processing the data with a UTF-8-based API such as System.Text.Json.
  • Simple EventSource(Uri) constructor for cases where you do not need any other configuration options.
  • Standard .NET XML documentation of all public types and methods is now produced in the build.
  • The release now publishes a Source Link package.

Changed:

  • The minimum .NET Standard compatibility version is now 2.0.
  • The minimum .NET Framework compatibility version is now 4.5.2.
  • Logging now works through the new LaunchDarkly.Logging facade which is used by LaunchDarkly .NET-based SDKs, instead of Common.Logging.
  • ConfigurationBuilder methods no longer throw any exceptions, except for one case: passing null for the stream URI. In all cases where a property has a maximum and/or minimum value, if you try to set a value outside that range it will simply be changed to the closest valid value. If two properties do not make sense to use together (such as a non-null HttpClient and a non-null HttpMessageHandler), one will simply override the other as described in the API documentation.
  • ConfigurationBuilder.DelayRetryDuration is named to InitialRetryDelay, which more accurately describes its meaning.
  • ConfigurationBuilder.MessageHandler is renamed to HttpMessageHandler, since that's the name of its type (also, "message" has other meanings in this API).
  • The type of Configuration.HttpContentFactory is now simply Func<HttpContent> rather than using a custom delegate type.
  • If you pass a Dictionary of headers to ConfigurationBuilder.RequestHeaders, it will now be copied. Previously the configuration retained a reference to the original Dictionary, which could cause problems if it was later modified.
  • EventSource now implements the stream read timeout in a way that uses the task scheduler more efficiently. Previously, it executed an additional task for each read with Task.Delay; now, it uses a timed cancellation token.
  • Exception messages have been rewritten for clarity and style.

Fixed:

  • ConfigurationBuilder.BackoffResetThreshold had no effect; the default value was being used regardless of what you set it to.
  • When reading the SSE stream, EventSource was using a case-insensitive comparison to recognize field names like event and data. The SSE specification states that field name "must be compared literally, with no case folding performed," so a field name like EVENT is invalid.

Removed:

  • Removed all types and methods that were marked as deprecated/obsolete in the last 3.x version.
  • Configuration no longer has a public constructor. Instances must now be created with Configuration.Builder.
  • The helper class ExponentialBackoffWithDecorrelation is no longer public.

3.4.0

03 Dec 19:02

Choose a tag to compare

[3.4.0] - 2020-12-03

Added:

  • You can now tell EventSource to use an HttpClient instance that you provide by calling ConfigurationBuilder.HttpClient. (Thanks, thorstenfleischmann!)

3.3.3

05 Nov 20:00

Choose a tag to compare

[3.3.3] - 2020-11-05

Added:

  • The package now has a specific target for .NET Standard 2.0, in addition to the previous targets of .NET Standard 1.4 and .NET Framework 4.5. There is no functional difference between the 2.0 and 1.4 builds, but it may be desirable for .NET Core/.NET Standard code to be able to avoid linking to any .NET Standard 1.x assemblies.

3.3.2

23 Oct 20:17

Choose a tag to compare

[3.3.2] - 2019-10-23

Fixed:

  • If a stream connection is restarted, EventSource should send a Last-Event-Id header if it previously received an event with an id field. (Thanks, fracek!)

3.3.1

09 Aug 04:26

Choose a tag to compare

[3.3.1] - 2019-08-08

Fixed:

  • If you don't explicitly provide an HttpMessageHandler in the configuration, EventSource will now use the default HttpClient constructor; previously, it would create an instance of the standard .NET HttpMessageHandler implementation and tell the HttpClient to use that. In .NET Framework and .NET Standard, this makes no difference, but in Xamarin, calling the default HttpClient constructor may allow it to use a better HTTP implementation based on native APIs.
  • Expanded and improved documentation comments.

3.3.0

26 Mar 19:26

Choose a tag to compare

[3.3.0] - 2019-03-26

Added:

  • The EventSource now implements IDisposable. Calling Dispose() has the same effect as calling Close().

3.2.3

14 Jan 21:54

Choose a tag to compare

[3.2.3] - 2019-01-14

Fixed:

  • The assemblies in this package now have Authenticode signatures. The release note for 3.2.1 was an error; that release did not include signatures.

3.2.2

10 Jan 00:13

Choose a tag to compare

[3.2.2] - 2019-01-09

Removed

  • The console applications for manual testing have been removed (because the unit tests now include full end-to-end tests against a stub HTTP server).

3.2.1

10 Jan 00:12

Choose a tag to compare

[3.2.1] - 2019-01-07

Changed

  • The published assemblies are now digitally signed as well as strong-named. Also, they are now built in Release mode and do not contain debug information.

3.2.0

24 Oct 17:16

Choose a tag to compare

[3.2.0] - 2018-10-24

Added

  • Previously, the delay before reconnect attempts would increase exponentially only if the previous connection could not be made at all or returned an HTTP error; if it received an HTTP 200 status, the delay would be reset to the minimum even if the connection then immediately failed. Now, the new configuration property BackoffResetThreshold (default: 1 minute) specifies the length of time that a connection must stay active in order for the reconnect delay to be reset. (#37)

Fixed

  • Fixed an unobserved exception that could occur following a stream timeout, which could cause a crash in .NET 4.0.

  • A NullReferenceException could sometimes be logged if a stream connection failed. (#24)