Клиентский веб-сокет прерывается после успешного подключения в MAUI C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Клиентский веб-сокет прерывается после успешного подключения в MAUI C#

Сообщение Anonymous »

Это код одной из страниц содержимого моего приложения чата MAUI.

Код: Выделить всё

private ClientWebSocket _clientWebSocket = new ClientWebSocket();
private readonly Uri _serverUri = new Uri("ws://10.0.2.2:6969/chat");

public MyPage()
{
InitializeComponent();
ConnectToServer();
}

private async void ConnectToServer()
{
try
{
if (_clientWebSocket.State != WebSocketState.Open)
{
_clientWebSocket = new ClientWebSocket();
await _clientWebSocket.ConnectAsync(_serverUri, CancellationToken.None);
}
_ = Task.Run(ReceiveMessages);
}
catch (Exception ex)
{
}
}

private async Task ReceiveMessages()
{
var buffer = new byte[1024 * 4];
while (_clientWebSocket.State == WebSocketState.Open)
{
WebSocketReceiveResult result;
var message = new StringBuilder();

do
{
result = await _clientWebSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);

if (result.MessageType == WebSocketMessageType.Text)
{
message.Append(Encoding.UTF8.GetString(buffer, 0, result.Count));
}
}
while (!result.EndOfMessage);

Device.BeginInvokeOnMainThread(() =>
{
chatMessages.Children.Add(new Label { Text = message.ToString() });
});
}
}

private async void SendMessage_Clicked(object sender, EventArgs e)
{
try
{
if (_clientWebSocket.State == WebSocketState.Open)
{
var message = edInputMessage.Text;
var buffer = Encoding.UTF8.GetBytes(message);
await _clientWebSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, CancellationToken.None);

Device.BeginInvokeOnMainThread(() =>
{
chatMessages.Children.Add(new Label { Text = $"Me: {message}" });
});

edInputMessage.Text = "";
}
}
catch (Exception ex)
{
}
}
В конструкторе public MyPage() я вызываю метод ConnectToServer. Что обеспечивает соединение с сервером веб-сокетов. Эта функция успешно соединяет клиента с веб-сокетом. В этой функции ConnectToServer я получаю состояние подключения к веб-сокету клиента как «Открыто».
После инициализации и загрузки страницы я нажимаю кнопку в пользовательском интерфейсе. Который вызывает событие SendMessage_Clicked. Это событие отправит сообщение с помощью сокета. Но здесь я получаю состояние соединения клиентского веб-сокета как «Прервано».
Я не могу понять, что там происходит. Нужна помощь, чтобы решить ее. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ui-c-sharp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»