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}/");