diff --git a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
index b1a99853ad..af79c18c4e 100644
--- a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
+++ b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
@@ -9,7 +9,7 @@ using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Extensions.Json;
using MediaBrowser.Controller.Net;
-using MediaBrowser.Model.Net;
+using MediaBrowser.Controller.Net.WebSocketMessages;
using MediaBrowser.Model.Session;
using Microsoft.Extensions.Logging;
@@ -85,6 +85,18 @@ namespace Emby.Server.Implementations.HttpServer
/// The state.
public WebSocketState State => _socket.State;
+ ///
+ /// Sends a message asynchronously.
+ ///
+ /// The message.
+ /// The cancellation token.
+ /// Task.
+ public Task SendAsync(WebSocketMessage message, CancellationToken cancellationToken)
+ {
+ var json = JsonSerializer.SerializeToUtf8Bytes(message, _jsonOptions);
+ return _socket.SendAsync(json, WebSocketMessageType.Text, true, cancellationToken);
+ }
+
///
/// Sends a message asynchronously.
///
@@ -224,7 +236,7 @@ namespace Emby.Server.Implementations.HttpServer
{
LastKeepAliveDate = DateTime.UtcNow;
return SendAsync(
- new WebSocketMessage
+ new OutboundWebSocketMessage
{
MessageId = Guid.NewGuid(),
MessageType = SessionMessageType.KeepAlive
diff --git a/Emby.Server.Implementations/Session/WebSocketController.cs b/Emby.Server.Implementations/Session/WebSocketController.cs
index cdc736950e..cf8e0fb006 100644
--- a/Emby.Server.Implementations/Session/WebSocketController.cs
+++ b/Emby.Server.Implementations/Session/WebSocketController.cs
@@ -7,8 +7,8 @@ using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Net;
+using MediaBrowser.Controller.Net.WebSocketMessages;
using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Net;
using MediaBrowser.Model.Session;
using Microsoft.Extensions.Logging;
@@ -77,7 +77,7 @@ namespace Emby.Server.Implementations.Session
}
return socket.SendAsync(
- new WebSocketMessage
+ new OutboundWebSocketMessage
{
Data = data,
MessageType = name,
diff --git a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
index 0524999c79..a07d9b3eb4 100644
--- a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
+++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
@@ -9,7 +9,7 @@ using System.Linq;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Net;
+using MediaBrowser.Controller.Net.WebSocketMessages;
using MediaBrowser.Model.Session;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
@@ -169,7 +169,7 @@ namespace MediaBrowser.Controller.Net
if (data is not null)
{
await connection.SendAsync(
- new WebSocketMessage
+ new OutboundWebSocketMessage
{
MessageId = Guid.NewGuid(),
MessageType = Type,
diff --git a/MediaBrowser.Controller/Net/IWebSocketConnection.cs b/MediaBrowser.Controller/Net/IWebSocketConnection.cs
index 4f2492b891..04b333230d 100644
--- a/MediaBrowser.Controller/Net/IWebSocketConnection.cs
+++ b/MediaBrowser.Controller/Net/IWebSocketConnection.cs
@@ -5,7 +5,6 @@ using System.Net;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Net;
namespace MediaBrowser.Controller.Net
{
diff --git a/MediaBrowser.Controller/Net/WebSocketMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessage.cs
index c02bcd70b6..92183e7929 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessage.cs
@@ -1,4 +1,3 @@
-using System;
using System.Text.Json.Serialization;
using MediaBrowser.Model.Session;
@@ -15,11 +14,6 @@ public abstract class WebSocketMessage
///
public virtual SessionMessageType MessageType { get; set; }
- ///
- /// Gets or sets the message id.
- ///
- public Guid MessageId { get; set; }
-
///
/// Gets or sets the server id.
///
diff --git a/MediaBrowser.Controller/Net/WebSocketMessageInfo.cs b/MediaBrowser.Controller/Net/WebSocketMessageInfo.cs
index 6f7ebf1565..2d986b7b34 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessageInfo.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessageInfo.cs
@@ -1,7 +1,5 @@
#nullable disable
-using MediaBrowser.Model.Net;
-
namespace MediaBrowser.Controller.Net
{
///
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStartMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStartMessage.cs
index b9f71b9225..b3a60199a9 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStartMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStartMessage.cs
@@ -1,20 +1,20 @@
-using System.Collections.Generic;
using System.ComponentModel;
-using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Activity log entry start message.
+/// Data is the timing data encoded as "$initialDelay,$interval" in ms.
///
-public class ActivityLogEntryStartMessage : WebSocketMessage>, IInboundWebSocketMessage
+public class ActivityLogEntryStartMessage : InboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
+ /// Data is the timing data encoded as "$initialDelay,$interval" in ms.
///
- /// Collection of activity log entries.
- public ActivityLogEntryStartMessage(IReadOnlyCollection data)
+ /// The timing data encoded as "$initialDelay,$interval".
+ public ActivityLogEntryStartMessage(string data)
: base(data)
{
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStopMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStopMessage.cs
index eac129b20a..6f65cb2c77 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStopMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ActivityLogEntryStopMessage.cs
@@ -1,6 +1,4 @@
-using System.Collections.Generic;
using System.ComponentModel;
-using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
@@ -8,17 +6,8 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Activity log entry stop message.
///
-public class ActivityLogEntryStopMessage : WebSocketMessage>, IInboundWebSocketMessage
+public class ActivityLogEntryStopMessage : InboundWebSocketMessage
{
- ///
- /// Initializes a new instance of the class.
- ///
- /// Collection of activity log entries.
- public ActivityLogEntryStopMessage(IReadOnlyCollection data)
- : base(data)
- {
- }
-
///
[DefaultValue(SessionMessageType.ActivityLogEntryStop)]
public override SessionMessageType MessageType => SessionMessageType.ActivityLogEntryStop;
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/InboundKeepAliveMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/InboundKeepAliveMessage.cs
new file mode 100644
index 0000000000..fec7cb4e41
--- /dev/null
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/InboundKeepAliveMessage.cs
@@ -0,0 +1,14 @@
+using System.ComponentModel;
+using MediaBrowser.Model.Session;
+
+namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
+
+///
+/// Keep alive websocket messages.
+///
+public class InboundKeepAliveMessage : InboundWebSocketMessage
+{
+ ///
+ [DefaultValue(SessionMessageType.KeepAlive)]
+ public override SessionMessageType MessageType => SessionMessageType.KeepAlive;
+}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStartMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStartMessage.cs
index dd2a7145e3..bf98470bf2 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStartMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStartMessage.cs
@@ -1,20 +1,19 @@
-using System.Collections.Generic;
using System.ComponentModel;
using MediaBrowser.Model.Session;
-using MediaBrowser.Model.Tasks;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Scheduled tasks info start message.
+/// Data is the timing data encoded as "$initialDelay,$interval" in ms.
///
-public class ScheduledTasksInfoStartMessage : WebSocketMessage>, IInboundWebSocketMessage
+public class ScheduledTasksInfoStartMessage : InboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
///
- /// Collection of task info.
- public ScheduledTasksInfoStartMessage(IReadOnlyCollection data)
+ /// The timing data encoded as $initialDelay,$interval.
+ public ScheduledTasksInfoStartMessage(string data)
: base(data)
{
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStopMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStopMessage.cs
index 84e1f01667..f36739c70a 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStopMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/ScheduledTasksInfoStopMessage.cs
@@ -1,24 +1,13 @@
-using System.Collections.Generic;
using System.ComponentModel;
using MediaBrowser.Model.Session;
-using MediaBrowser.Model.Tasks;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Scheduled tasks info stop message.
///
-public class ScheduledTasksInfoStopMessage : WebSocketMessage>, IInboundWebSocketMessage
+public class ScheduledTasksInfoStopMessage : InboundWebSocketMessage
{
- ///
- /// Initializes a new instance of the class.
- ///
- /// Collection of task info.
- public ScheduledTasksInfoStopMessage(IReadOnlyCollection data)
- : base(data)
- {
- }
-
///
[DefaultValue(SessionMessageType.ScheduledTasksInfoStop)]
public override SessionMessageType MessageType => SessionMessageType.ScheduledTasksInfoStop;
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStartMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStartMessage.cs
index e35a5dc3ad..a40a0c79ee 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStartMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStartMessage.cs
@@ -1,19 +1,19 @@
using System.ComponentModel;
-using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Sessions start message.
+/// Data is the timing data encoded as "$initialDelay,$interval" in ms.
///
-public class SessionsStartMessage : WebSocketMessage, IInboundWebSocketMessage
+public class SessionsStartMessage : InboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
///
- /// Session info.
- public SessionsStartMessage(SessionInfo data)
+ /// The timing data encoded as $initialDelay,$interval.
+ public SessionsStartMessage(string data)
: base(data)
{
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStopMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStopMessage.cs
index 7e3582d640..288d111c5c 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStopMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Inbound/SessionsStopMessage.cs
@@ -1,5 +1,4 @@
using System.ComponentModel;
-using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Session;
namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
@@ -7,17 +6,8 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Inbound;
///
/// Sessions stop message.
///
-public class SessionsStopMessage : WebSocketMessage, IInboundWebSocketMessage
+public class SessionsStopMessage : InboundWebSocketMessage
{
- ///
- /// Initializes a new instance of the class.
- ///
- /// Session info.
- public SessionsStopMessage(SessionInfo data)
- : base(data)
- {
- }
-
///
[DefaultValue(SessionMessageType.SessionsStop)]
public override SessionMessageType MessageType => SessionMessageType.SessionsStop;
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessage.cs
index 20ca888e11..8d6e821df8 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessage.cs
@@ -1,9 +1,8 @@
-namespace MediaBrowser.Controller.Net.WebSocketMessages;
+namespace MediaBrowser.Controller.Net.WebSocketMessages;
///
-/// Class representing the list of outbound websocket message types.
-/// Only used in openapi generation.
+/// Inbound websocket message.
///
-public class InboundWebSocketMessage : WebSocketMessage
+public class InboundWebSocketMessage : WebSocketMessage, IInboundWebSocketMessage
{
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessageOfT.cs b/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessageOfT.cs
new file mode 100644
index 0000000000..4da5e7d31f
--- /dev/null
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/InboundWebSocketMessageOfT.cs
@@ -0,0 +1,26 @@
+#pragma warning disable SA1649 // File name must equal class name.
+
+namespace MediaBrowser.Controller.Net.WebSocketMessages;
+
+///
+/// Inbound websocket message with data.
+///
+/// The data type.
+public class InboundWebSocketMessage : WebSocketMessage, IInboundWebSocketMessage
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public InboundWebSocketMessage()
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The data to send.
+ protected InboundWebSocketMessage(T data)
+ {
+ Data = data;
+ }
+}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ActivityLogEntryMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ActivityLogEntryMessage.cs
index 5650ee4bbe..2a098615d5 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ActivityLogEntryMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ActivityLogEntryMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Activity log created message.
///
-public class ActivityLogEntryMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class ActivityLogEntryMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ForceKeepAliveMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ForceKeepAliveMessage.cs
index 94ade5e817..ca55340a05 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ForceKeepAliveMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ForceKeepAliveMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Force keep alive websocket messages.
///
-public class ForceKeepAliveMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class ForceKeepAliveMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/GeneralCommandMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/GeneralCommandMessage.cs
index 6c71e73f9d..5fbbb06242 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/GeneralCommandMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/GeneralCommandMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// General command websocket message.
///
-public class GeneralCommandMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class GeneralCommandMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/LibraryChangedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/LibraryChangedMessage.cs
index 6432ae8efb..47417c4059 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/LibraryChangedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/LibraryChangedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Library changed message.
///
-public class LibraryChangedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class LibraryChangedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/OutboundKeepAliveMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/OutboundKeepAliveMessage.cs
new file mode 100644
index 0000000000..d907dcff95
--- /dev/null
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/OutboundKeepAliveMessage.cs
@@ -0,0 +1,14 @@
+using System.ComponentModel;
+using MediaBrowser.Model.Session;
+
+namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
+
+///
+/// Keep alive websocket messages.
+///
+public class OutboundKeepAliveMessage : OutboundWebSocketMessage
+{
+ ///
+ [DefaultValue(SessionMessageType.KeepAlive)]
+ public override SessionMessageType MessageType => SessionMessageType.KeepAlive;
+}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlayMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlayMessage.cs
index 7f943bda10..86ee2ff900 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlayMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlayMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Play command websocket message.
///
-public class PlayMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PlayMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlaystateMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlaystateMessage.cs
index 804ccb37d6..cd6d28cb30 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlaystateMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PlaystateMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Playstate message.
///
-public class PlaystateMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PlaystateMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCancelledMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCancelledMessage.cs
index 3d7dc5c937..17fd259384 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCancelledMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCancelledMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Plugin installation cancelled message.
///
-public class PluginInstallationCancelledMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PluginInstallationCancelledMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCompletedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCompletedMessage.cs
index 81268007fd..3e60198bac 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCompletedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationCompletedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Plugin installation completed message.
///
-public class PluginInstallationCompletedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PluginInstallationCompletedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationFailedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationFailedMessage.cs
index 9177f12938..40032f16e4 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationFailedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallationFailedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Plugin installation failed message.
///
-public class PluginInstallationFailedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PluginInstallationFailedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallingMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallingMessage.cs
index e371440a0f..28861896f7 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallingMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginInstallingMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Package installing message.
///
-public class PluginInstallingMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PluginInstallingMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginUninstalledMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginUninstalledMessage.cs
index b2994fc956..ca49591194 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginUninstalledMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/PluginUninstalledMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Plugin uninstalled message.
///
-public class PluginUninstalledMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class PluginUninstalledMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RefreshProgressMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RefreshProgressMessage.cs
index 42dbc30295..41b3cd46ab 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RefreshProgressMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RefreshProgressMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Refresh progress message.
///
-public class RefreshProgressMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class RefreshProgressMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RestartRequiredMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RestartRequiredMessage.cs
index 3f3d9e4c84..a89f19b617 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RestartRequiredMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/RestartRequiredMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Restart required.
///
-public class RestartRequiredMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class RestartRequiredMessage : OutboundWebSocketMessage
{
///
[DefaultValue(SessionMessageType.RestartRequired)]
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTaskEndedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTaskEndedMessage.cs
index d69662b004..afa36fb722 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTaskEndedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTaskEndedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Scheduled task ended message.
///
-public class ScheduledTaskEndedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class ScheduledTaskEndedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTasksInfoMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTasksInfoMessage.cs
index 41a05b0de2..c7360779f9 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTasksInfoMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ScheduledTasksInfoMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Scheduled tasks info message.
///
-public class ScheduledTasksInfoMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class ScheduledTasksInfoMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCancelledMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCancelledMessage.cs
index d4950b8b67..f832c8935e 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCancelledMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCancelledMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Series timer cancelled message.
///
-public class SeriesTimerCancelledMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class SeriesTimerCancelledMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCreatedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCreatedMessage.cs
index 091c10be6d..450b4c7994 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCreatedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SeriesTimerCreatedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Series timer created message.
///
-public class SeriesTimerCreatedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class SeriesTimerCreatedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerRestartingMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerRestartingMessage.cs
index a465d8b008..8f09c802fe 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerRestartingMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerRestartingMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Server restarting down message.
///
-public class ServerRestartingMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class ServerRestartingMessage : OutboundWebSocketMessage
{
///
[DefaultValue(SessionMessageType.ServerRestarting)]
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerShuttingDownMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerShuttingDownMessage.cs
index 0b998a5239..485e71b6e3 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerShuttingDownMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/ServerShuttingDownMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Server shutting down message.
///
-public class ServerShuttingDownMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class ServerShuttingDownMessage : OutboundWebSocketMessage
{
///
[DefaultValue(SessionMessageType.ServerShuttingDown)]
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SessionsMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SessionsMessage.cs
index 4c91e0bca2..3504831b87 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SessionsMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SessionsMessage.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using System.ComponentModel;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Session;
@@ -7,13 +8,13 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Sessions message.
///
-public class SessionsMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class SessionsMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
///
/// Session info.
- public SessionsMessage(SessionInfo data)
+ public SessionsMessage(IReadOnlyList data)
: base(data)
{
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayCommandMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayCommandMessage.cs
index 17a0fc66e5..d0624ec016 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayCommandMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayCommandMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Sync play command.
///
-public class SyncPlayCommandMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class SyncPlayCommandMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandMessage.cs
index d145d0e01a..6a501aa7ea 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Untyped sync play command.
///
-public class SyncPlayGroupUpdateCommandMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class SyncPlayGroupUpdateCommandMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupInfoMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupInfoMessage.cs
index 668392c66b..47f706e2a4 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupInfoMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupInfoMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
/// Sync play group update command with group info.
/// GroupUpdateTypes: GroupJoined.
///
-public class SyncPlayGroupUpdateCommandOfGroupInfoMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class SyncPlayGroupUpdateCommandOfGroupInfoMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage.cs
index ec8c3344f4..11ddb1e250 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
/// Sync play group update command with group state update.
/// GroupUpdateTypes: StateUpdate.
///
-public class SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class SyncPlayGroupUpdateCommandOfGroupStateUpdateMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage.cs
index 465363f143..7e73399b1b 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
/// Sync play group update command with play queue update.
/// GroupUpdateTypes: PlayQueue.
///
-public class SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class SyncPlayGroupUpdateCommandOfPlayQueueUpdateMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfStringMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfStringMessage.cs
index b87e9bf715..5b5ccd3eda 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfStringMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/SyncPlayGroupUpdateCommandOfStringMessage.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
/// Sync play group update command with string.
/// GroupUpdateTypes: GroupDoesNotExist (error), LibraryAccessDenied (error), NotInGroup (error), GroupLeft (groupId), UserJoined (username), UserLeft (username).
///
-public class SyncPlayGroupUpdateCommandOfStringMessage : WebSocketMessage>, IOutboundWebSocketMessage
+public class SyncPlayGroupUpdateCommandOfStringMessage : OutboundWebSocketMessage>
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCancelledMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCancelledMessage.cs
index 0e70549ef8..f44fd126b6 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCancelledMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCancelledMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Timer cancelled message.
///
-public class TimerCancelledMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class TimerCancelledMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCreatedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCreatedMessage.cs
index 295b3081ce..8c1e102eb2 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCreatedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/TimerCreatedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// Timer created message.
///
-public class TimerCreatedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class TimerCreatedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDataChangedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDataChangedMessage.cs
index b60769540d..6a053643d8 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDataChangedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDataChangedMessage.cs
@@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// User data changed message.
///
-public class UserDataChangedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class UserDataChangedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDeletedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDeletedMessage.cs
index 6d527be7f2..add3f77717 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDeletedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserDeletedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// User deleted message.
///
-public class UserDeletedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class UserDeletedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserUpdatedMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserUpdatedMessage.cs
index 99e9a1f911..9a72deae1f 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserUpdatedMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/Outbound/UserUpdatedMessage.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
///
/// User updated message.
///
-public class UserUpdatedMessage : WebSocketMessage, IOutboundWebSocketMessage
+public class UserUpdatedMessage : OutboundWebSocketMessage
{
///
/// Initializes a new instance of the class.
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessage.cs
index dba3c8392b..ad97796e70 100644
--- a/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessage.cs
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessage.cs
@@ -1,9 +1,14 @@
+using System;
+
namespace MediaBrowser.Controller.Net.WebSocketMessages;
///
-/// Class representing the list of outbound websocket message types.
-/// Only used in openapi generation.
+/// Outbound websocket message.
///
-public class OutboundWebSocketMessage : WebSocketMessage
+public class OutboundWebSocketMessage : WebSocketMessage, IOutboundWebSocketMessage
{
+ ///
+ /// Gets or sets the message id.
+ ///
+ public Guid MessageId { get; set; }
}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessageOfT.cs b/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessageOfT.cs
new file mode 100644
index 0000000000..f09f294b41
--- /dev/null
+++ b/MediaBrowser.Controller/Net/WebSocketMessages/OutboundWebSocketMessageOfT.cs
@@ -0,0 +1,33 @@
+#pragma warning disable SA1649 // File name must equal class name.
+
+using System;
+
+namespace MediaBrowser.Controller.Net.WebSocketMessages;
+
+///
+/// Outbound websocket message with data.
+///
+/// The data type.
+public class OutboundWebSocketMessage : WebSocketMessage, IOutboundWebSocketMessage
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public OutboundWebSocketMessage()
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The data to send.
+ protected OutboundWebSocketMessage(T data)
+ {
+ Data = data;
+ }
+
+ ///
+ /// Gets or sets the message id.
+ ///
+ public Guid MessageId { get; set; }
+}
diff --git a/MediaBrowser.Controller/Net/WebSocketMessages/Shared/KeepAliveMessage.cs b/MediaBrowser.Controller/Net/WebSocketMessages/Shared/KeepAliveMessage.cs
deleted file mode 100644
index 7f636212ca..0000000000
--- a/MediaBrowser.Controller/Net/WebSocketMessages/Shared/KeepAliveMessage.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.ComponentModel;
-using MediaBrowser.Model.Session;
-
-namespace MediaBrowser.Controller.Net.WebSocketMessages.Shared;
-
-///
-/// Keep alive websocket messages.
-///
-public class KeepAliveMessage : WebSocketMessage, IInboundWebSocketMessage, IOutboundWebSocketMessage
-{
- ///
- /// Initializes a new instance of the class.
- ///
- /// The seconds to keep alive for.
- public KeepAliveMessage(int data)
- : base(data)
- {
- }
-
- ///
- [DefaultValue(SessionMessageType.KeepAlive)]
- public override SessionMessageType MessageType => SessionMessageType.KeepAlive;
-}