c# ошибка 400 при подключении ClientWebSocket

ошибка The server returned status code '400' when status code '101' was expected.

Но если я пишу Uri serverUri = new Uri("ws://localhost:8888/"); то все работает. Подскажите как решить вопрос с ошибкой, в гугле ничего не смог найти.

Проверял сервер на доступность по локальному ip через программу SocketTest, она подключается успешно, а мой клиент ни в какую

Код сервера

public async Task InitServerAsync()
   {
       var httpListener = new HttpListener();
       httpListener.Prefixes.Add($"http://{ip}:{port}/");

       try
       {
           try
           {
               httpListener.Start();
           }
           catch (Exception e)
           {
               MessageBox.Show($"port: {port} занят, укажите другой порт");
               Form1.IsEnabledBtn = true;
               return;
           }
           while (true)
           {
               await Task.Delay(1);
               var httpContext = await httpListener.GetContextAsync();

               if (httpContext.Request.IsWebSocketRequest)
               {
                   var webSocketContext = await httpContext.AcceptWebSocketAsync(null);
                    _ = Task.Run(() => ProcessServerAsync(webSocketContext.WebSocket));
                //   await ProcessServerAsync();
               }
               else
               {
                   httpContext.Response.StatusCode = 400; // Bad Request
                   httpContext.Response.Close();
               }
           }

       }
       catch
       {
           httpListener.Stop();
       }
   }

Код клиента

using ClientWebSocket webSocket = new ClientWebSocket();
Uri serverUri = new Uri("ws://113.168.76.1:8888/");
Console.WriteLine("Нажмите любую кнопку для соеденения");
Console.ReadKey();
Console.WriteLine("Подключение");
try
{
    // Подключение к серверу
    var sendBuffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes("hello"));
    await webSocket.ConnectAsync(serverUri, CancellationToken.None);
    await webSocket.SendAsync(sendBuffer, WebSocketMessageType.Text, true, CancellationToken.None);
    Console.WriteLine("Подключено к серверу!");

    // Запуск задачи для получения сообщений
    await Recive();
    Console.ReadKey();
}
catch (Exception ex)
{
    Console.WriteLine($"Ошибка: {ex.Message}");
    Console.ReadKey();
}

Ответы (1 шт):

Автор решения: aepot

Чтобы слушать любой сетевой интерфейс, замените префикс вот на этот.

httpListener.Prefixes.Add($"http://+:{port}/");
→ Ссылка