Serwery hostowane
Te akcje robią coś dokładnie odwrotnego niż pozostałe: zamiast wywoływać usługę, hostują ją przez czas trwania scenariusza.
Typowy przypadek użycia: przetestowanie webhooka. Scenariusz otwiera serwer, wyzwala wywołanie biznesowe, czeka na nadejście wywołania przychodzącego i sprawdza jego treść — wszystko w jednym grafie.
Wspólny wzorzec
Section titled “Wspólny wzorzec”Akcja nasłuchu ma dwa wyjścia:
| Wyjście | Emisja |
|---|---|
connected | Sygnał, jednorazowo, gdy serwer zaczyna nasłuchiwać |
served | Jedna emisja na każde obsłużone wywołanie przychodzące, przenosząca { request, response } |
Warto zauważyć, że nie ma tu wyjścia response: te bloki nie wykonują
wywołania, lecz je odbierają.
Podobnie jak w przypadku połączeń, na blokach podłączonych do served należy
włączyć „Odtwarzaj przy każdym odebranym zdarzeniu”, aby obsługiwały
wszystkie wywołania, a nie tylko pierwsze.
Serwer HTTP ──connected──► Żądanie HTTP „wyzwolenie webhooka” └───────served──────► Assert na request.body.event następnie ──► Zamknięcie serwera HTTPDostępne pary
Section titled “Dostępne pary”| Nasłuch | Zamknięcie | Protokół |
|---|---|---|
| Serwer HTTP | Zamknięcie serwera HTTP | HTTP |
| Serwer gRPC | Zamknięcie serwera gRPC | gRPC |
| Serwer SOAP | Zamknięcie serwera SOAP | SOAP — rozdzielanie według SOAPAction lub nazwy operacji |
| Serwer GraphQL | Zamknięcie serwera GraphQL | GraphQL — udostępnia SDL i skonfigurowane resolwery |
| Serwer OData | Zamknięcie serwera OData | OData — stosuje $filter, $select, $orderby, $top, $skip, $count, $expand, $batch |
Dwa dodatkowe zamknięcia dotyczą serwerów z rodziny WebSocket: Zamknięcie serwera WebSocket oraz Zamknięcie serwera Socket.IO — zob. Połączenia i strumienie.
Co odpowiada serwer
Section titled “Co odpowiada serwer”Odpowiedź jest tą skonfigurowaną na żądaniu, którym steruje dana akcja: status, nagłówki i treść w HTTP, symulowane metody w gRPC, operacje w SOAP, resolwery w GraphQL, dane w OData.
{{variables}} są rozwiązywane w momencie obsługi wywołania: zmiana
zmiennej w czasie, gdy serwer nasłuchuje, zmienia kolejną odpowiedź. Zob.
Tryb serwera.
Współdzielenie portu
Section titled “Współdzielenie portu”Restorm otwiera tylko jedno gniazdo na port i rozdziela ruch zależnie od
charakteru wywołania. Symulowany serwer HTTP i serwer WebSocket mogą więc
nasłuchiwać razem na :8080.
Port zostaje zwolniony po zatrzymaniu jego ostatniej trasy.