Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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.");
            }
        }
Beispiel #3
0
        /// <summary>
        /// Posts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        public void Post(SendMessageCommand request)
        {
            var task = SendMessageCommand(request);

            Task.WaitAll(task);
        }