deniszykov.WebSocketListener 4.2.4

A lightweight and highly scalable asynchronous WebSocket listener for .NET Core, .NET and Mono.

There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package deniszykov.WebSocketListener -Version 4.2.4
dotnet add package deniszykov.WebSocketListener --version 4.2.4
<PackageReference Include="deniszykov.WebSocketListener" Version="4.2.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add deniszykov.WebSocketListener --version 4.2.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

[Common] Replace all DynamicMethod invocation with slower reflection alternatives in case AOT environment.
[WS] better error message while writing to closed stream
[Transports] clean-up SocketAsyncEventArgs after each operation to prevent holding GC references on used buffers

added DualMode option for TcpTransport
fixed race condition in WebSocket.Write() (Thanks @fuzzykiller)

stable version

fixed ping queue stop on error
added in/out buffers for ping/pong to reduce change of collision if both side pinging
replaced masking/demasking algorithm with faster unsafe implementation
added IpProtectionLevel option for tcp transport
fixed unbserved exception in WSMessageWriteStream.CloseAsync method

removed unused code from helpers
Prevent crash when value contains only empty spaces

added few changes in SendFrameAsync to prevent unobserved exceptions
added better error message for parallel AcceptWebSocketAsync call
added better error message when handshake error occurred

fixed unobserved exception at WebSocketSecureConnectionExtension.ExtendConnectionAsync

fixed infinite loop in timed queue (batch-ping related stuff)

fixed bug in BandwidthSaving ping strategy

added request header to WebSocketClient.ConnectAsync signature
PingQueue list re-use
Echo refactoring (perf. counters removed)
JetBrains.Annotations is now internal

fixed TimedQueue implementation (atomic Int64 reading for 32 bit systems)
fixed Headers add NameValueCollection implementation to threat header values as not splitted headers
removed AsyncResultTask and refactored BeginRead/BeginWrite on streams
updated AsyncQueue implementation

added 'Connection:close' header to 'Bad Request' response of WebSocket handshaker
fixed Unobserved exception because wrong implementation of TaskHelper.IgnoreFault.
refactored TaskHelper.IgnoreFault and TaskHelper.PropagateResutTo to shortcut on Completed tasks
fixed ping errors on WebSockets
fixed TimedQueue impl
Headers refactoring, added HeaderFlags parameter to headers
refactored Socket shutdown sequence to prevent 'connection reset by peer' errors

UNIX Domain Sockets are tested on Linux

Version History

Version Downloads Last updated
4.2.7-alpha 50 6/27/2019
4.2.6-alpha 492 10/29/2018
4.2.4 3,673 7/3/2018
4.2.2 1,128 3/22/2018
4.1.3 783 11/7/2017
4.0.0 1,475 6/21/2017