Using the following code in a .NET Form app. A Websocket connection to a Server is established and the commands are send correctly and received correctly on the server side.
Using the same code in a .NET MAUI app a Exception Error is thrown: ‘System.Net.WebSockets.WebSocketException’ in System.Private.CoreLib.dll
Thanks in advance for some help.
<code>
private async void BtnOn_Clicked(object sender, EventArgs e)
{
await SendCommand("O");
}
private async void BtnOff_Clicked(object sender, EventArgs e)
{
await SendCommand("F");
}
private async Task SendCommand(string command)
{
ClientWebSocket socket = new ClientWebSocket();
try
{
await socket.ConnectAsync(new Uri("ws://192.168.0.2:80/command"), CancellationToken.None);
byte[] buffer = Encoding.UTF8.GetBytes(command);
await socket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
Trace.WriteLine("Incoming message: " + command);
// Receive response if needed
var responseBuffer = new byte[1024];
var response = await socket.ReceiveAsync(new ArraySegment<byte>(responseBuffer), CancellationToken.None);
var responseMessage = Encoding.UTF8.GetString(responseBuffer, 0, response.Count);
}
catch (Exception ex)
{
await DisplayAlert("Error", $"Error: {ex.Message}", "OK");
}
finally
{
if (socket.State == WebSocketState.Open || socket.State == WebSocketState.Connecting)
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by the client", CancellationToken.None);
socket.Dispose();
}
}
</code>
<code>
private async void BtnOn_Clicked(object sender, EventArgs e)
{
await SendCommand("O");
}
private async void BtnOff_Clicked(object sender, EventArgs e)
{
await SendCommand("F");
}
private async Task SendCommand(string command)
{
ClientWebSocket socket = new ClientWebSocket();
try
{
await socket.ConnectAsync(new Uri("ws://192.168.0.2:80/command"), CancellationToken.None);
byte[] buffer = Encoding.UTF8.GetBytes(command);
await socket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
Trace.WriteLine("Incoming message: " + command);
// Receive response if needed
var responseBuffer = new byte[1024];
var response = await socket.ReceiveAsync(new ArraySegment<byte>(responseBuffer), CancellationToken.None);
var responseMessage = Encoding.UTF8.GetString(responseBuffer, 0, response.Count);
}
catch (Exception ex)
{
await DisplayAlert("Error", $"Error: {ex.Message}", "OK");
}
finally
{
if (socket.State == WebSocketState.Open || socket.State == WebSocketState.Connecting)
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by the client", CancellationToken.None);
socket.Dispose();
}
}
</code>
private async void BtnOn_Clicked(object sender, EventArgs e)
{
await SendCommand("O");
}
private async void BtnOff_Clicked(object sender, EventArgs e)
{
await SendCommand("F");
}
private async Task SendCommand(string command)
{
ClientWebSocket socket = new ClientWebSocket();
try
{
await socket.ConnectAsync(new Uri("ws://192.168.0.2:80/command"), CancellationToken.None);
byte[] buffer = Encoding.UTF8.GetBytes(command);
await socket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
Trace.WriteLine("Incoming message: " + command);
// Receive response if needed
var responseBuffer = new byte[1024];
var response = await socket.ReceiveAsync(new ArraySegment<byte>(responseBuffer), CancellationToken.None);
var responseMessage = Encoding.UTF8.GetString(responseBuffer, 0, response.Count);
}
catch (Exception ex)
{
await DisplayAlert("Error", $"Error: {ex.Message}", "OK");
}
finally
{
if (socket.State == WebSocketState.Open || socket.State == WebSocketState.Connecting)
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by the client", CancellationToken.None);
socket.Dispose();
}
}