diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-09 13:38:02 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-09 13:38:02 -0400 |
| commit | e1f8c18b516f5bd31f64b8faaa53266a3daddd7a (patch) | |
| tree | b7f3212a71d19dfd99f44d50ba1fa85aa8e81b6b /MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs | |
| parent | f57cec4cff8feff70e62056549ea19bbd6a8316c (diff) | |
added ability to track web sockets per session
Diffstat (limited to 'MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs new file mode 100644 index 000000000..7ce074cd7 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -0,0 +1,58 @@ +using System.Linq; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Session; +using System; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Session +{ + /// <summary> + /// Class SessionWebSocketListener + /// </summary> + public class SessionWebSocketListener : IWebSocketListener + { + /// <summary> + /// The _true task result + /// </summary> + private readonly Task _trueTaskResult = Task.FromResult(true); + + /// <summary> + /// The _session manager + /// </summary> + private readonly ISessionManager _sessionManager; + + /// <summary> + /// Initializes a new instance of the <see cref="SessionWebSocketListener"/> class. + /// </summary> + /// <param name="sessionManager">The session manager.</param> + public SessionWebSocketListener(ISessionManager sessionManager) + { + _sessionManager = sessionManager; + } + + /// <summary> + /// Processes the message. + /// </summary> + /// <param name="message">The message.</param> + /// <returns>Task.</returns> + public Task ProcessMessage(WebSocketMessageInfo message) + { + if (string.Equals(message.MessageType, "Identify", StringComparison.OrdinalIgnoreCase)) + { + var vals = message.Data.Split('|'); + + var deviceId = vals[0]; + var client = vals[1]; + + var session = _sessionManager.AllConnections.FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) && string.Equals(i.Client, client)); + + if (session != null) + { + ((SessionManager)_sessionManager).IdentifyWebSocket(session.Id, message.Connection); + } + } + + return _trueTaskResult; + } + } +} |
