Ich versuche, Request/Response-Paradigma für WebSocketSharp-Bibliothek genau dasselbe implementieren funktioniert es für HttpClient Anfrage/Antwort-Async-Verhalten. Ich versuche es zu erreichen, indem ich den Async-Callback verwende, wie er in dem folgenden Code angegeben ist. Ich habe versucht, das OnMessage-Rückrufereignis der SendAsync-Methode abzuwarten, bis der Server die Antwort sendet. Ich kann die Antwort im Rahmen der SendAsync-Methode abrufen, löscht jedoch den Wert der Antwort, sobald wir den SendAsync-Bereich verlassen haben.Request/Response-Paradigma für WebSocketsharp-Bibliothek mit Websocket.SendAsync() und OnMessage Callback-Funktion
string clientResponse = null;
var response = Task.Run(() => objWSClient.SendAsync(stream, Convert.ToInt32(stream.Length), (async (completed) =>
{
if (completed)
{
clientResponse = await WSMessageSendSuccess(reqObject, callback);
// Websocket response is flushed to the console window, but when it leaves the scope, it doesn't hold the response out of the SendAsync() scope.
Console.WriteLine(clientResponse);
}
else
{
WSMessageSendFail(reqObject);
clientResponse = "Failure to send Message";
}
})));
while (response.Status != TaskStatus.RanToCompletion)
{
Task.Delay(10000).Wait();
}
response.Wait();
// As soon as we leave scope of WebSocket.SendAsync() method, it clears the client response variable value.
// variable name : clientResponse;, it also works same with static property/variable.
return clientResponse;
Sie die API von folgenden Microsoft-Artikel einkapseln kann, https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/interop-with-other-asynchronous -Patterns-und-Typen # Aufgaben-und-das-Ereignis-basierte-asynchrone-Muster-eap –