aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server
diff options
context:
space:
mode:
authorVasily <JustAMan@users.noreply.github.com>2019-02-20 15:03:42 +0300
committerGitHub <noreply@github.com>2019-02-20 15:03:42 +0300
commit8ef41020d94832fbce4a3ef8aba598d30b7adaa5 (patch)
treedca4bf1b09c31b8f5bfd4e2b5815d5ede859179e /Jellyfin.Server
parent60df855b263e691f946973a192621e7998db9cbb (diff)
parentfca226bdfde49f30e6347593a9d8870eec55269f (diff)
Merge pull request #847 from Bond-009/async
Make websockets code async
Diffstat (limited to 'Jellyfin.Server')
-rw-r--r--Jellyfin.Server/SocketSharp/SharpWebSocket.cs7
-rw-r--r--Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs26
2 files changed, 12 insertions, 21 deletions
diff --git a/Jellyfin.Server/SocketSharp/SharpWebSocket.cs b/Jellyfin.Server/SocketSharp/SharpWebSocket.cs
index 6eee4cd12..9b0951857 100644
--- a/Jellyfin.Server/SocketSharp/SharpWebSocket.cs
+++ b/Jellyfin.Server/SocketSharp/SharpWebSocket.cs
@@ -44,10 +44,11 @@ namespace Jellyfin.Server.SocketSharp
socket.OnMessage += OnSocketMessage;
socket.OnClose += OnSocketClose;
socket.OnError += OnSocketError;
-
- WebSocket.ConnectAsServer();
}
+ public Task ConnectAsServerAsync()
+ => WebSocket.ConnectAsServer();
+
public Task StartReceive()
{
return _taskCompletionSource.Task;
@@ -133,7 +134,7 @@ namespace Jellyfin.Server.SocketSharp
_cancellationTokenSource.Cancel();
- WebSocket.Close();
+ WebSocket.CloseAsync().GetAwaiter().GetResult();
}
_disposed = true;
diff --git a/Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs b/Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs
index 58c4d38a2..736f9feef 100644
--- a/Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs
+++ b/Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs
@@ -69,7 +69,7 @@ namespace Jellyfin.Server.SocketSharp
{
if (_listener == null)
{
- _listener = new HttpListener(_logger, _cryptoProvider, _socketFactory, _networkManager, _streamHelper, _fileSystem, _environment);
+ _listener = new HttpListener(_logger, _cryptoProvider, _socketFactory, _streamHelper, _fileSystem, _environment);
}
_listener.EnableDualMode = _enableDualMode;
@@ -79,22 +79,14 @@ namespace Jellyfin.Server.SocketSharp
_listener.LoadCert(_certificate);
}
- foreach (var prefix in urlPrefixes)
- {
- _logger.LogInformation("Adding HttpListener prefix " + prefix);
- _listener.Prefixes.Add(prefix);
- }
+ _logger.LogInformation("Adding HttpListener prefixes {Prefixes}", urlPrefixes);
+ _listener.Prefixes.AddRange(urlPrefixes);
- _listener.OnContext = ProcessContext;
+ _listener.OnContext = async c => await InitTask(c, _disposeCancellationToken).ConfigureAwait(false);
_listener.Start();
}
- private void ProcessContext(HttpListenerContext context)
- {
- _ = Task.Run(async () => await InitTask(context, _disposeCancellationToken).ConfigureAwait(false));
- }
-
private static void LogRequest(ILogger logger, HttpListenerRequest request)
{
var url = request.Url.ToString();
@@ -151,10 +143,7 @@ namespace Jellyfin.Server.SocketSharp
Endpoint = endpoint
};
- if (WebSocketConnecting != null)
- {
- WebSocketConnecting(connectingArgs);
- }
+ WebSocketConnecting?.Invoke(connectingArgs);
if (connectingArgs.AllowConnection)
{
@@ -165,6 +154,7 @@ namespace Jellyfin.Server.SocketSharp
if (WebSocketConnected != null)
{
var socket = new SharpWebSocket(webSocketContext.WebSocket, _logger);
+ await socket.ConnectAsServerAsync().ConfigureAwait(false);
WebSocketConnected(new WebSocketConnectEventArgs
{
@@ -174,7 +164,7 @@ namespace Jellyfin.Server.SocketSharp
Endpoint = endpoint
});
- await ReceiveWebSocket(ctx, socket).ConfigureAwait(false);
+ await ReceiveWebSocketAsync(ctx, socket).ConfigureAwait(false);
}
}
else
@@ -192,7 +182,7 @@ namespace Jellyfin.Server.SocketSharp
}
}
- private async Task ReceiveWebSocket(HttpListenerContext ctx, SharpWebSocket socket)
+ private async Task ReceiveWebSocketAsync(HttpListenerContext ctx, SharpWebSocket socket)
{
try
{