Задерживать сообщения до завершения соединения?C#

Место общения программистов C#
Ответить
Anonymous
 Задерживать сообщения до завершения соединения?

Сообщение Anonymous »

Я использую Fleck. Я не уверен, является ли это ошибкой в ​​их дизайне или в моем коде, но сообщения принимаются до того, как у меня появляется возможность подключить пользователя, что затрудняет разрешение клиента для работы после получения данных, когда у нас есть Я его не зарегистрировал.
Вот как я подключаюсь и получаю:

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

private void OnClientConnected(IWebSocketConnection connection)
{
var clientId = connection.ConnectionInfo.Id;
var networkClient = _clientFactory.CreateClient(clientId, connection);

_clientRepository.AddClient(clientId, networkClient);
}

private async void OnDataReceived(byte[] data, IWebSocketConnection connection)
{
var clientId = connection.ConnectionInfo.Id;
var (found, client) = _clientRepository.TryGetByGuid(clientId);

if (!found || client == null)
{
_logger.LogError("Failed to resolve network client from connected GUID");
return;
}

await client.OnReceivedAsync(data);
}
Выдается ошибка, из-за которой ее невозможно устранить с помощью GUID, поскольку мы еще не зарегистрировали ее в репозитории.
Если я добавлю задержка в начале OnDataReceived, например:

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

await Task.Delay(100);
Все работает нормально...
Как обойти этот небольшой недостаток, не задерживая сообщения без необходимости?

Подробнее здесь: https://stackoverflow.com/questions/781 ... n-complete
Ответить

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

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

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

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

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