diff --git a/MediaBrowser.Common/Net/IWebSocket.cs b/MediaBrowser.Common/Net/IWebSocket.cs
index 805340b906..748c6642cb 100644
--- a/MediaBrowser.Common/Net/IWebSocket.cs
+++ b/MediaBrowser.Common/Net/IWebSocket.cs
@@ -1,7 +1,7 @@
-using System;
+using MediaBrowser.Model.Net;
+using System;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Net;
namespace MediaBrowser.Common.Net
{
@@ -20,8 +20,14 @@ namespace MediaBrowser.Common.Net
/// Gets or sets the receive action.
///
/// The receive action.
- Action OnReceiveDelegate { get; set; }
+ Action OnReceiveBytes { get; set; }
+ ///
+ /// Gets or sets the on receive.
+ ///
+ /// The on receive.
+ Action OnReceive { get; set; }
+
///
/// Sends the async.
///
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index 69a23b84fb..e4468dfe47 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -151,15 +151,14 @@ namespace MediaBrowser.Providers.Movies
await _tmdbSettingsSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
- // Check again in case it got populated while we were waiting.
- if (_tmdbSettings != null)
- {
- _tmdbSettingsSemaphore.Release();
- return _tmdbSettings;
- }
-
try
{
+ // Check again in case it got populated while we were waiting.
+ if (_tmdbSettings != null)
+ {
+ return _tmdbSettings;
+ }
+
using (var json = await GetMovieDbResponse(new HttpRequestOptions
{
Url = string.Format(TmdbConfigUrl, ApiKey),
diff --git a/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs b/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs
index 9ad6178472..96f61912a3 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs
@@ -88,9 +88,9 @@ namespace MediaBrowser.Server.Implementations.HttpServer
break;
}
- if (OnReceiveDelegate != null)
+ if (OnReceiveBytes != null)
{
- OnReceiveDelegate(bytes);
+ OnReceiveBytes(bytes);
}
}
}
@@ -160,6 +160,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// Gets or sets the receive action.
///
/// The receive action.
- public Action OnReceiveDelegate { get; set; }
+ public Action OnReceiveBytes { get; set; }
+
+ public Action OnReceive { get; set; }
}
}
diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
index 80b6a0f7db..6cddcdf2ee 100644
--- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
@@ -186,7 +186,10 @@ namespace MediaBrowser.Server.Implementations.ServerManager
/// The instance containing the event data.
void HttpServer_WebSocketConnected(object sender, WebSocketConnectEventArgs e)
{
- var connection = new WebSocketConnection(e.WebSocket, e.Endpoint, _jsonSerializer, _logger) { OnReceive = ProcessWebSocketMessageReceived };
+ var connection = new WebSocketConnection(e.WebSocket, e.Endpoint, _jsonSerializer, _logger)
+ {
+ OnReceive = ProcessWebSocketMessageReceived
+ };
_webSocketConnections.Add(connection);
}
diff --git a/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs
index 0dd8cd0fd4..3612b85b95 100644
--- a/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs
@@ -85,7 +85,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
_jsonSerializer = jsonSerializer;
_socket = socket;
- _socket.OnReceiveDelegate = OnReceiveInternal;
+ _socket.OnReceiveBytes = OnReceiveInternal;
+ _socket.OnReceive = OnReceiveInternal;
RemoteEndPoint = remoteEndPoint;
_logger = logger;
}
@@ -127,6 +128,34 @@ namespace MediaBrowser.Server.Implementations.ServerManager
}
}
+ private void OnReceiveInternal(string message)
+ {
+ LastActivityDate = DateTime.UtcNow;
+
+ if (OnReceive == null)
+ {
+ return;
+ }
+ try
+ {
+ var stub = (WebSocketMessage