sgcWebSockets .NET 2026.10.0 Latest
- 2026.10.0: 2026 October
- NewAdded .NET 10 support, the library now also targets net10.0.
- NewMCP server and client now support the MCP 2026-07-28 specification. The same server answers both the new stateless clients and the existing 2025-11-25 clients such as VS Code and Claude, so nothing changes for the clients you already have. New in 2026-07-28: server/discover, the protocol version and client details sent with every request, the Mcp-Method and Mcp-Name request headers (checked by the server), cache hints on list results and the new error codes.
- NewMCP subscriptions/listen: a client can open one long lived stream to receive tools, prompts and resources list changes and resource updates. The existing Send notification methods reach these clients too, and the stream is closed cleanly when the server stops (enabled by default).
- NewMCP client: it tries the 2026-07-28 protocol first and falls back to 2025-11-25 when the server does not support it, remembering the answer per server, and tool parameters marked with x-mcp-header are sent as request headers.
- NewNew HSTS option for the HTTP servers (SecurityOptions.HSTS_Options, off by default). When enabled, every response sent over TLS includes the Strict-Transport-Security header, which is what SSL Labs needs to give an A+ grade. The header is never sent over plain HTTP, and it is not added twice when your code already sets it.
- FixedFixed the servers silently ignoring errors raised by Start, Stop or ReStart, for example when the port is already in use. They are now reported through OnException.
- FixedFixed ReStart, also used by the WatchDog, waiting forever when the server could not be stopped.
- FixedFixed stopping a TCP server, and every server built on it, possibly waiting forever.
- FixedFixed the HTTP.sys WebSocket server freezing on WriteData with a connection Guid, or when a client disconnected during Broadcast or WriteData, a regression of 2026.9.0.
- FixedFixed the HTTP.sys server reporting Active as True after a failed start, never releasing its URL reservations when stopped (error 183 on the next start), and failing to start with OAuth2 when the URLs are set only through Bindings.
- FixedFixed several crashes, memory leaks and memory corruption in the HTTP.sys server, mainly with Asynchronous enabled, in HighPerf mode and in 64-bit applications.
- FixedFixed possible deadlocks in the WebSocket, HTTP, HTTP/2, TCP, UDP and protocol components, with NotifyEvents neAsynchronous or neSynchronous, when an event handler used the component while other connections were reporting events or disconnecting.
- FixedFixed possible crashes when queued events were delivered for a component or connection that had already been freed, with NotifyEvents neAsynchronous.
- FixedFixed a small memory leak in the WebSocket and HTTP servers when several clients connected at the same time to a newly started server.
- FixedFixed a small memory leak in servers using the IOCP IOHandler when connections were closed while the server was starting.
- FixedFixed possible memory corruption and crashes when a WebSocket or HTTP server was stopped while clients were sending data.
- FixedFixed a small memory leak and an open socket handle in servers using the IOCP IOHandler when stopped while new connections were being accepted.
- FixedFixed a broadcast that excluded a connection reaching nobody at all.
- FixedFixed a WebSocket client with Authentication.Token.JWT never connecting, it failed with the message that a host is required.
- FixedFixed an access violation when a WebSocket client is destroyed while it is still connected, for example when the application is closed without disconnecting first. The read thread could still be reading through the TLS handler, which was freed before the thread had stopped. It happened with every NotifyEvents mode.
- FixedFixed a race when a server connection is closed with Close from a thread other than its own, for example from a timer or another connection. The connection thread went on reading the socket and closed it while the Close frame was being sent and the peer answer was being read, which raised an access violation that was hidden.
- FixedFixed memory leaks in the MCP server (one connection per session), in WriteData when the stream could not be read, and in queued messages and pending notifications when a component is destroyed.
- FixedFixed several AI components reading a field from the answer and getting the whole JSON block instead of the value. It affected the function call name in Gemini, the container details in Anthropic, and the message role and the message text in DeepSeek and Ollama.
- FixedFixed OpenAI image requests failing with a 'Missing required parameter' error when the prompt, or any other text, contained a double quote. The text is now escaped correctly.
- FixedFixed the text of OpenAI image and audio requests travelling with the spaces replaced by %20, so the AI received a distorted prompt.
- FixedFixed the requests sent to the AI providers being invalid when the text held a double quote, a backslash or a line break, so the provider answered with an error. It affected the chat messages, the prompts, the instructions and the system messages of OpenAI, Anthropic, Gemini, DeepSeek, Grok, Mistral and Ollama.
- FixedFixed the system message getting lost when it was sent together with the user message to Ollama, only the user message travelled.
- FixedFixed the MCP client 2025-11-25 notification stream over HTTP not raising any event.
- FixedFixed the MCP server over stdio not answering a request for an unknown method.
- FixedFixed the MCP client raising an unclear error when the server answers an HTTP error without a JSON body, for example a plain 401.
- FixedFixed the SChannel IO handler leaving a copy of the private key in the Windows key store for every connection using a PFX file, and not sending the client certificate on Windows 11 and Windows Server 2022.
- FixedFixed concurrent SChannel connections using a certificate from the Windows certificate store failing the handshake or crashing.
- FixedFixed 64-bit SChannel applications negotiating TLS 1.2 instead of TLS 1.3 on Windows 11 and Windows Server 2022.
- FixedFixed an access violation on TLS servers using the IOCP IOHandler when the server writes to a client that has just disconnected abruptly. The failed write closed the connection and freed its TLS session while that session was still encrypting the message.
- FixedFixed the OAuth2 server rejecting DPoP proofs signed with RSA keys.
- FixedFixed JWT tokens being signed with a signature that was plain Base64 instead of base64url, and the header being read without decoding it, so tokens holding certain characters were rejected by other libraries and by this one.
- FixedFixed non-ASCII claims written by other JWT libraries being read one character per byte, so a name holding an accent came back as two wrong characters. Claims written as escapes are now read as well, including the alg header itself.
- FixedFixed the custom claims of a JWT header or payload getting lost when the options were copied.
- FixedFixed the metadata list of WebAuthn being read with plain Base64 instead of base64url, so the FIDO metadata could not be loaded.
- FixedFixed the HTTP.sys server not answering requests for a missing file, so the client waited until its timeout. It now responds with 404 or 500.
- FixedFixed the HTTP/2 client resending already answered requests after a reconnection, and reconnecting in an endless loop when a pending request could not be sent.
- FixedFixed the HTTP/2 async requests and the MQTT QoS 1 and QoS 2 publish raising an exception when the stream was not at position 0.
- FixedFixed server sent events on the HTTP.sys server, which never worked because the response headers were sent as content, and on Linux the header lines ended with the wrong character.
- FixedFixed an HTTP POST request with the header Accept: text/event-stream being answered as a server sent events connection instead of reaching the server.
- FixedFixed HTTP header values not being read when there is no space after the colon.