Acest proiect demonstrează streaming HTTP folosind Server-Sent Events (SSE) cu Spring Boot WebFlux. Este format din două aplicații:
- Calculator Server: Un serviciu web reactiv care efectuează calcule și transmite rezultatele folosind SSE
- Calculator Client: O aplicație client care consumă endpoint-ul de streaming
- Java 17 sau versiune superioară
- Maven 3.6 sau versiune superioară
java/
├── calculator-server/ # Spring Boot server with SSE endpoint
│ ├── src/main/java/com/example/calculatorserver/
│ │ ├── CalculatorServerApplication.java
│ │ └── CalculatorController.java
│ └── pom.xml
├── calculator-client/ # Spring Boot client application
│ ├── src/main/java/com/example/calculatorclient/
│ │ └── CalculatorClientApplication.java
│ └── pom.xml
└── README.md
-
Calculator Server expune un endpoint
/calculatecare:- Primește parametrii de interogare:
a(număr),b(număr),op(operație) - Operații suportate:
add,sub,mul,div - Returnează Server-Sent Events cu progresul calculului și rezultatul
- Primește parametrii de interogare:
-
Calculator Client se conectează la server și:
- Trimite o cerere pentru a calcula
7 * 5 - Consumă răspunsul în streaming
- Afișează fiecare eveniment în consolă
- Trimite o cerere pentru a calcula
Deschide un terminal și navighează în directorul serverului:
cd calculator-server
mvn clean package
mvn spring-boot:runServerul va porni la http://localhost:8080
Ar trebui să vezi o ieșire similară cu:
Started CalculatorServerApplication in X.XXX seconds
Netty started on port 8080 (http)
Deschide un terminal nou și navighează în directorul clientului:
cd calculator-client
mvn clean package
mvn spring-boot:runClientul se va conecta la server, va efectua calculul și va afișa rezultatele în streaming.
cd calculator-server
mvn clean package
java -jar target/calculator-server-0.0.1-SNAPSHOT.jarcd calculator-client
mvn clean package
java -jar target/calculator-client-0.0.1-SNAPSHOT.jarPoți testa serverul și folosind un browser web sau curl:
Accesează: http://localhost:8080/calculate?a=10&b=5&op=add
curl "http://localhost:8080/calculate?a=10&b=5&op=add" -H "Accept: text/event-stream"Când rulezi clientul, ar trebui să vezi o ieșire în streaming similară cu:
event:info
data:Calculating: 7.0 mul 5.0
event:result
data:35.0
add- Adunare (a + b)sub- Scădere (a - b)mul- Înmulțire (a * b)div- Împărțire (a / b, returnează NaN dacă b = 0)
Parametri:
a(obligatoriu): Primul număr (double)b(obligatoriu): Al doilea număr (double)op(obligatoriu): Operația (add,sub,mul,div)
Răspuns:
- Content-Type:
text/event-stream - Returnează Server-Sent Events cu progresul calculului și rezultatul
Exemplu de cerere:
GET /calculate?a=7&b=5&op=mul HTTP/1.1
Host: localhost:8080
Accept: text/event-stream
Exemplu de răspuns:
event: info
data: Calculating: 7.0 mul 5.0
event: result
data: 35.0
-
Portul 8080 este deja folosit
- Oprește orice altă aplicație care folosește portul 8080
- Sau schimbă portul serverului în
calculator-server/src/main/resources/application.yml
-
Conexiune refuzată
- Asigură-te că serverul este pornit înainte de a porni clientul
- Verifică dacă serverul a pornit cu succes pe portul 8080
-
Probleme cu numele parametrilor
- Proiectul include configurarea Maven pentru compilator cu flag-ul
-parameters - Dacă întâmpini probleme la legarea parametrilor, asigură-te că proiectul este construit cu această configurație
- Proiectul include configurarea Maven pentru compilator cu flag-ul
- Apasă
Ctrl+Cîn terminalul unde rulează fiecare aplicație - Sau folosește
mvn spring-boot:stopdacă rulezi ca proces în fundal
- Spring Boot 3.3.1 - Framework pentru aplicații
- Spring WebFlux - Framework web reactiv
- Project Reactor - Bibliotecă pentru fluxuri reactive
- Netty - Server I/O non-blocant
- Maven - Instrument de build
- Java 17+ - Limbaj de programare
Încearcă să modifici codul pentru a:
- Adăuga mai multe operații matematice
- Include gestionarea erorilor pentru operații invalide
- Adăuga logare pentru cereri/răspunsuri
- Implementa autentificare
- Adăuga teste unitare
Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite rezultate din utilizarea acestei traduceri.