public static async Task <WebSocketConnection> Connect(Uri peer, Action <string> log) { ClientWebSocket clientWebSocket = new ClientWebSocket(); await clientWebSocket.ConnectAsync(peer, CancellationToken.None); switch (clientWebSocket.State) { case WebSocketState.Open: log?.Invoke($"Opened connection to remote server: {peer}"); WebSocketConnection socketConnection = new ClientWebSocketConnection(clientWebSocket, peer, log); socketConnection.onMessage = DataContext.Instance.ReceiveData; CurrentConnection = socketConnection; return(socketConnection); default: string errorMessage = $"Cannot connect to remote server {peer} with status {clientWebSocket.State}"; log?.Invoke(errorMessage); throw new WebSocketException(errorMessage); } }
public static async Task Disconnect() { await CurrentConnection.Disconnect(); CurrentConnection = null; }