/// <summary> /// Sends a message to the server. /// </summary> /// <param name="message">The message to send.</param> /// <returns>The task of sending the message to the websocket</returns> protected override async Task SendMessageInternalAsync(string message) { await this.webSocketTask.ConfigureAwait(false); this.webSocketTask.Wait(); using (HttpResponseMessage response = this.webSocketTask.Result) { if (!response.IsSuccessStatusCode) { throw await DevicePortalException.CreateAsync(response); } } }
#pragma warning restore 1998 /// <summary> /// Starts listening for messages from the websocket. /// Once they are received they are parsed and the WebSocketMessageReceived event is raised. /// </summary> /// <returns>The task of listening for messages from the websocket.</returns> protected override async Task StartListeningForMessagesInternalAsync() { this.IsListeningForMessages = true; this.keepListeningForMessages = true; try { while (this.keepListeningForMessages) { await this.webSocketTask.ConfigureAwait(false); using (HttpResponseMessage response = this.webSocketTask.Result) { if (!response.IsSuccessStatusCode) { throw await DevicePortalException.CreateAsync(response); } using (HttpContent content = response.Content) { MemoryStream dataStream = new MemoryStream(); await content.CopyToAsync(dataStream).ConfigureAwait(false); // Ensure we return with the stream pointed at the origin. dataStream.Position = 0; this.ConvertStreamToMessage(dataStream); } } } } catch { } finally { this.stoppedReceivingMessages.Set(); this.IsListeningForMessages = false; } }