/// <summary> /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> public void Post(SendMessageCommand request) { var command = new MessageCommand { Header = string.IsNullOrEmpty(request.Header) ? "Message from Server" : request.Header, TimeoutMs = request.TimeoutMs, Text = request.Text }; var task = _sessionManager.SendMessageCommand(request.Id, command, CancellationToken.None); Task.WaitAll(task); }
private async Task SendMessageCommand(SendMessageCommand request) { var session = _sessionManager.Sessions.FirstOrDefault(i => i.Id == request.Id); if (session == null) { throw new ResourceNotFoundException(string.Format("Session {0} not found.", request.Id)); } if (!session.SupportsRemoteControl) { throw new ArgumentException(string.Format("Session {0} does not support remote control.", session.Id)); } var socket = session.WebSockets.OrderByDescending(i => i.LastActivityDate).FirstOrDefault(i => i.State == WebSocketState.Open); if (socket != null) { try { await socket.SendAsync(new WebSocketMessage <MessageCommand> { MessageType = "MessageCommand", Data = new MessageCommand { Header = string.IsNullOrEmpty(request.Header) ? "Message from Server" : request.Header, TimeoutMs = request.TimeoutMs, Text = request.Text } }, CancellationToken.None).ConfigureAwait(false); } catch (Exception ex) { Logger.ErrorException("Error sending web socket message", ex); } } else { throw new InvalidOperationException("The requested session does not have an open web socket."); } }
/// <summary> /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> public void Post(SendMessageCommand request) { var task = SendMessageCommand(request); Task.WaitAll(task); }