diff --git a/src/WireMock.Net.Minimal/Owin/WireMockMiddleware.cs b/src/WireMock.Net.Minimal/Owin/WireMockMiddleware.cs
index 790a352e..fd90bda5 100644
--- a/src/WireMock.Net.Minimal/Owin/WireMockMiddleware.cs
+++ b/src/WireMock.Net.Minimal/Owin/WireMockMiddleware.cs
@@ -28,6 +28,8 @@ using Next = Microsoft.Owin.OwinMiddleware;
using OwinMiddleware = System.Object;
using IContext = Microsoft.AspNetCore.Http.HttpContext;
using Next = Microsoft.AspNetCore.Http.RequestDelegate;
+using HandlebarsDotNet;
+using WireMock.Org.Abstractions;
#endif
namespace WireMock.Owin
@@ -169,6 +171,20 @@ namespace WireMock.Owin
return;
}
+#if USE_ASPNETCORE && NET8_0_OR_GREATER
+ if (ctx.WebSockets.IsWebSocketRequest)
+ {
+ // Accept WebSocket upgrade
+ var webSocket = await ctx.WebSockets.AcceptWebSocketAsync();
+
+ // Get and invoke handler
+ var provider = targetMapping.Provider as WireMock.WebSockets.ResponseProviders.WebSocketResponseProvider;
+ await provider.HandleWebSocketAsync(webSocket, request);
+
+ return; // Don't process as HTTP
+ }
+#endif
+
logRequest = targetMapping.LogMapping;
if (targetMapping.IsAdminInterface && _options.AuthenticationMatcher != null && request.Headers != null)
diff --git a/src/WireMock.Net.WebSockets/ResponseProviders/WebSocketResponseProvider.cs b/src/WireMock.Net.WebSockets/ResponseProviders/WebSocketResponseProvider.cs
index 0114b495..d1cae943 100644
--- a/src/WireMock.Net.WebSockets/ResponseProviders/WebSocketResponseProvider.cs
+++ b/src/WireMock.Net.WebSockets/ResponseProviders/WebSocketResponseProvider.cs
@@ -16,7 +16,7 @@ namespace WireMock.WebSockets.ResponseProviders;
///
/// Response provider for handling WebSocket connections.
///
-internal class WebSocketResponseProvider : IResponseProvider
+public class WebSocketResponseProvider : IResponseProvider
{
private readonly Func? _handler;
private readonly Func>? _messageHandler;
diff --git a/test/WireMock.Net.Tests/WebSockets/WebSocketTests.cs b/test/WireMock.Net.Tests/WebSockets/WebSocketTests.cs
index b567b9d7..e67b61cf 100644
--- a/test/WireMock.Net.Tests/WebSockets/WebSocketTests.cs
+++ b/test/WireMock.Net.Tests/WebSockets/WebSocketTests.cs
@@ -59,7 +59,7 @@ public class WebSocketTests
// Act
using var client = new ClientWebSocket();
await client.ConnectAsync(
- new Uri($"ws://localhost:{server.Port}/echo"),
+ new Uri($"ws://{server.Url}/echo"),
CancellationToken.None);
var message = Encoding.UTF8.GetBytes("Hello WebSocket!");