Class WebSocketService
- Namespace
- Virtufin.WebSocketManager.Services
- Assembly
- Virtufin.WebSocketManager.dll
public class WebSocketService : IWebSocketService
- Inheritance
-
WebSocketService
- Implements
- Inherited Members
Constructors
WebSocketService(IWebSocketConnectionStore, IWebSocketClientWrapper, IDaprPublisher, IWebSocketUrlValidator, ILogger<WebSocketService>)
public WebSocketService(IWebSocketConnectionStore connectionStore, IWebSocketClientWrapper webSocketClient, IDaprPublisher daprPublisher, IWebSocketUrlValidator urlValidator, ILogger<WebSocketService> logger)
Parameters
connectionStoreIWebSocketConnectionStorewebSocketClientIWebSocketClientWrapperdaprPublisherIDaprPublisherurlValidatorIWebSocketUrlValidatorloggerILogger<WebSocketService>
Methods
ConnectAsync(string, bool, CancellationToken)
public Task<WebSocketConnection> ConnectAsync(string url, bool autoReconnect, CancellationToken cancellationToken = default)
Parameters
urlstringautoReconnectboolcancellationTokenCancellationToken
Returns
DisconnectAsync(string, CancellationToken)
public Task DisconnectAsync(string id, CancellationToken cancellationToken = default)
Parameters
idstringcancellationTokenCancellationToken
Returns
GetTag(string, string)
public string? GetTag(string id, string key)
Parameters
Returns
GetTags(string)
public IReadOnlyDictionary<string, string> GetTags(string id)
Parameters
idstring
Returns
ListConnectionsAsync(CancellationToken)
public Task<IEnumerable<WebSocketConnection>> ListConnectionsAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
ReclaimAsync(string, CancellationToken)
Takes ownership of a connection last known to be owned by another,
now-unreachable instance. Unlike a fresh ConnectAsync(string, bool, CancellationToken),
the connection ID and its persisted metadata (URL, auto-reconnect,
topic, tags) are preserved. If auto-reconnect is set, attempts to
open a fresh socket for it immediately -- the old owner's socket
object lives in that process's memory, unreachable from here, so
this instance genuinely has no live connection until one is
(re)established. Returns false if no persisted record exists
for id.
public Task<bool> ReclaimAsync(string id, CancellationToken cancellationToken = default)
Parameters
idstringcancellationTokenCancellationToken
Returns
SendAsync(string, byte[], int, string, CancellationToken)
public Task<byte[]> SendAsync(string id, byte[] message, int timeoutMs, string contentType, CancellationToken cancellationToken = default)
Parameters
idstringmessagebyte[]timeoutMsintcontentTypestringcancellationTokenCancellationToken
Returns
SendRawAsync(string, byte[], string, CancellationToken)
public Task SendRawAsync(string id, byte[] message, string contentType, CancellationToken cancellationToken = default)
Parameters
idstringmessagebyte[]contentTypestringcancellationTokenCancellationToken
Returns
SetTag(string, string, string)
public void SetTag(string id, string key, string value)
Parameters
SetTags(string, IDictionary<string, string>)
public void SetTags(string id, IDictionary<string, string> tags)
Parameters
idstringtagsIDictionary<string, string>
StartPublishAsync(string, string, CancellationToken)
public Task StartPublishAsync(string id, string topic, CancellationToken cancellationToken = default)
Parameters
idstringtopicstringcancellationTokenCancellationToken
Returns
StopPublishAsync(string, CancellationToken)
public Task StopPublishAsync(string id, CancellationToken cancellationToken = default)
Parameters
idstringcancellationTokenCancellationToken