From 009fd859498c5bd095236d53219ff09ba0d9499a Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Sun, 24 Nov 2019 15:08:02 +0100 Subject: [PATCH] WebsocketResource: Add Property CurrentWebSockets --- websocket/WebsocketResource.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/websocket/WebsocketResource.cs b/websocket/WebsocketResource.cs index 467cf80..04f731c 100644 --- a/websocket/WebsocketResource.cs +++ b/websocket/WebsocketResource.cs @@ -5,6 +5,7 @@ using ln.logging; using System.IO; using ln.types; using System.Text; +using System.Linq; namespace ln.http.resources.websocket { @@ -12,6 +13,9 @@ namespace ln.http.resources.websocket { public Func WebSocketFactory { get; } + public IEnumerable CurrentWebSockets { get { lock (this) { return currentWebSockets.ToArray(); }; } } + List currentWebSockets = new List(); + public WebsocketResource(Resource container,String resourceName, Func webSocketFactory) :base(container,resourceName) { @@ -25,14 +29,24 @@ namespace ln.http.resources.websocket public override HttpResponse GetResponse(HttpRequest httpRequest) { + WebSocket webSocket = null; try { - WebSocketFactory(httpRequest).Run(); + webSocket = WebSocketFactory(httpRequest); + lock (this) + currentWebSockets.Add(webSocket); + webSocket.Run(); } catch (Exception e) { Logging.Log(e); } + finally + { + if (webSocket != null) + lock (this) + currentWebSockets.Remove(webSocket); + } httpRequest.GetConnectionStream().Close(); return null;