Ich habe Windows-Anwendung, die mit dem Server über Websockets kommuniziert, verwende ich Meteorserver als Server und websockets4net für die Kommunikation im Client. wenn einige Nachrichten an den Server gesendet werden (JSON-Format). Server reagiert auf Websocket in anderer Reihenfolge. Ich kann die Nachrichten verfolgen, die an den Server gesendet werden. In C# können wir Consumer-Muster erzeugen, wo ich MessageId und Callback im Verzeichnis speichern und Callback ausführen kann, wenn die Antwort empfangen wurde.Asynchrone Ereignisausführung mit Websockets
//<int, Action>(<messageid,Callback delegate>)
ConcurrentDictionary<int, Action> serverResponseCollection = new ConcurrentDictionary<int, Action>();
public send(JObject message,Action Callback)
{
socket.Send(message);
serverResponseCollection.Add(message.id,Callback);
}
void socket_MessageReceived(object sender, MessageReceivedEventArgs e)
{
//server response contains message id
//get callback function and execute
var callbackObj = serverResponseCollection[e.id];
Callback();
}
Warum möchten Sie jeder Anforderung, die Sie an den Server senden, einen anderen Rückruf zuordnen? – gaurawerma
ja, ich rufe verschiedene Server-Methoden, kann unterschiedliche Antwort zurückgeben, kann unabhängig behandelt werden. –
können Sie mir zeigen, was Sie tun in client.Execute ("ConfirmOrder", Rückruf)? – gaurawerma