Komunikacja klient-serwer na eventach

Komunikacja klient-serwer na eventach
0

Cześć,

Wraz z kolegą na zaliczenie piszemy komunikator, klient w C#, serwer w Javie. Całości opiera się na Websocketach i działa mniej więcej tak:

Klikam przycisk, zostaje wywołana metoda która wysyła message do serwera z danymi rejestracji, jednocześnie kontroler ma za subskrybowany event zwrotny który zostanie wywołany jak tylko otrzymam message OnRegister. Wszystko fajnie, jakoś to działa.

Kontroler:

Kopiuj

void Login()   
{
var packet = new RegisterDataPacket() { Login = login, Email = email, Password = SecurityHandler.GetShaWithSalt(password) };
RegisterEndpoint.Send(typeof(RegisterDataPacket).Name, packet);
RegisterView.RegisterStarted(); 
}
======================================
void OnRegisterStatus(RegisterStatusPacket packet)
{
      if (packet.Status)
      {
            RegisterView.RegisterSuccess();
       }
       else
       {
            RegisterView.RegisterFailed();
        }
}


Widok:

Kopiuj
public void RegisterFailed()
        {
            this.InvokeOnRequired(() =>
            {
                SetControlsState(true);
                labelStatus.ForeColor = Color.Red;
                labelStatus.Text = "Rejestracja nie powiodła się.";
            });

        }

        public void RegisterSuccess()
        {
            this.InvokeOnRequired(() =>
            {
                SetControlsState(true);
                labelStatus.ForeColor = Color.Green;
                labelStatus.Text = "Rejestracja powiodła się.";
                Close();
            });
        }
 

Niestety te rozwiązanie słabo mi odpowiada. Chciałbym już na poziomie metody Login wiedzieć czy operacja się udała czy nie, nie mogę czekać tam jednak na wynik operacji bo raz ze message odbierane są z biblioteki przez eventy, a dwa ze blokowałoby to UI. Pytanie brzmi jak optymalnie powinno to wyglądać? Czytałem coś o async/await oraz TaskCompletionSource ale nie za bardzo rozumiem jak to powinno wyglądać.

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:około miesiąc
0
Kopiuj
Dzieńdobry, jestem Jan Piekielny, chciałbym się uwierzytelnić używając tego hasła *wyciąga karteczkę*.
Ekspedientka z uśmiechem na ustach mówi:
Spróbuję pana zalogować
*Uśmiecha się*
*Uśmiecham się*
o, mamy wyniki!

Udało się?

Oczywiście, że nie :)

Nie do przeskoczenia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.