У меня настроен таймер, который неоднократно опрашивает веб-сокет для соединений, показанных здесь. Таймер срабатывает каждые 16 мс.
Когда пакет получен, он десериализует его как JSON и создает событие. Это работает, но делает это только один раз.
Я добавил строки вывода для тестирования:
Код: Выделить всё
Console.WriteLine("Awaiting started")
Код: Выделить всё
Console.WriteLine("Awaiting ended")
Код: Выделить всё
private async void poll(Object? sender, ElapsedEventArgs event_args)
{
switch (web_socket.State)
{
case WebSocketState.Open:
{
if (socket_connected == false)
{
socket_connected = true;
}
try
{
// ReceiveAsync automatically polls and receives the packet.
Memory memory = new Memory(new Byte[1024]);
Console.WriteLine("Awaiting started");
ValueWebSocketReceiveResult result = await web_socket.ReceiveAsync(memory, CancellationToken.None);
Console.WriteLine("Awaiting ended");
// Only attempt deserialization if a packet was received, aka the buffer is not empty.
if (result.Count != 0)
{
deserialize_event(memory.Slice(0, result.Count).ToArray());
}
}
catch (Exception exception)
{
Console.WriteLine("Pusher polling error: " + exception.ToString());
}
}
break;
case WebSocketState.Closed:
{
connection_closed(web_socket.CloseStatus);
}
break;
}
}
Что происходит на самом деле:
[img]https://i .sstatic.net/0kKRvZ3C.png[/img]
Похоже, что он получает только один единственный пакет, а затем все вызовы ReceiveAsync никогда не завершаются.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ormation-a
Мобильная версия