Ich registriere eine RCP-Prozedur mit dem Thruway-Client und rufe sie mit dem Autohahn-Client an.Rückgabe eines Arrays aus einer Remote-Prozedur
Das Problem, das ich konfrontiert wurde, ist, dass, wenn der Angerufene ein leeres Array von der Prozedur return array();
zurückgibt der Anrufer den null
Wert erhält.
Wenn der Angerufene ein Einzelelementarray return array(['foo' => 'bar', 'baz' => 'quux']);
zurückgibt, empfängt der Aufrufer das Objekt, das nicht in ein Array eingeschlossen ist.
Und nur die Rückgabe mehrerer Objekte in einem Array funktioniert wie erwartet: Der Aufrufer erhält ein Array von Objekten.
Das ist absolut unpraktisch und nicht intuitiv: Ich muss überprüfen, ob die Antwort definiert ist, ob es ein Array ist oder nicht ... Ich möchte dem Anrufer erhalten, was ich tatsächlich vom Angerufenen: ein leeres Array, ein Array eines Elements und eines Arrays aus mehreren Elementen. Ich sende ein Array - ich möchte, dass der Client ein Array bekommt.
Die Frage ist: Wie behebt man dieses Verhalten? Ich bin mir nicht einmal sicher, welcher der beiden Clients falsch konfiguriert ist. Oder vielleicht ist dies auf dem Router konfigurierbar (ich verwende Crossbar als Router). Oder vielleicht ist dies eine erwartete Implementierung des Protokolls (was einfach schrecklich wäre).
Danke für den Test. Ich werde zwei Thruway-Kunden testen. – Kolyunya