support channels with dlna

This commit is contained in:
Luke Pulverenti
2014-07-29 23:31:35 -04:00
parent 063675bb07
commit 51e964dae3
93 changed files with 957 additions and 326 deletions

View File

@@ -234,6 +234,8 @@ namespace MediaBrowser.Server.Implementations.Session
private Task SendMessage<T>(WebSocketMessage<T> message, CancellationToken cancellationToken)
{
if (SkipSending()) return Task.FromResult(true);
var socket = GetActiveSocket();
return socket.SendAsync(message, cancellationToken);
@@ -241,6 +243,8 @@ namespace MediaBrowser.Server.Implementations.Session
private Task SendMessages<T>(WebSocketMessage<T> message, CancellationToken cancellationToken)
{
if (SkipSending()) return Task.FromResult(true);
var tasks = GetActiveSockets().Select(i => Task.Run(async () =>
{
try
@@ -257,6 +261,27 @@ namespace MediaBrowser.Server.Implementations.Session
return Task.WhenAll(tasks);
}
private bool SkipSending()
{
if (Session != null)
{
if (string.Equals(Session.Client, "mb-classic", StringComparison.OrdinalIgnoreCase))
{
Version version;
if (!string.IsNullOrWhiteSpace(Session.ApplicationVersion) && Version.TryParse(Session.ApplicationVersion, out version))
{
if (version < new Version(3, 0, 196))
{
_logger.Debug("Skipping web socket message to MBC version {0}.", version);
return true;
}
}
}
}
return false;
}
public void Dispose()
{
foreach (var socket in Sockets.ToList())