Skip to content

Latest commit

 

History

History
202 lines (148 loc) · 5.56 KB

File metadata and controls

202 lines (148 loc) · 5.56 KB

Calculator HTTP Streaming Demo

Mradi huu unaonyesha utiririshaji wa HTTP ukitumia Server-Sent Events (SSE) pamoja na Spring Boot WebFlux. Unajumuisha programu mbili:

  • Calculator Server: Huduma ya wavuti ya ki-reactive inayofanya mahesabu na kutiririsha matokeo kwa kutumia SSE
  • Calculator Client: Programu ya mteja inayotumia kiungo cha utiririshaji

Mahitaji ya Awali

  • Java 17 au zaidi
  • Maven 3.6 au zaidi

Muundo wa Mradi

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

Jinsi Inavyofanya Kazi

  1. Calculator Server hutoa /calculate endpoint that:

    • Accepts query parameters: a (number), b (number), op (operation)
    • Supported operations: add, sub, mul, div
    • Returns Server-Sent Events with calculation progress and result
  2. The Calculator Client connects to the server and:

    • Makes a request to calculate 7 * 5
    • Inatumia majibu ya utiririshaji
    • Inachapisha kila tukio kwenye console

Kuendesha Programu

Chaguo 1: Kutumia Maven (Inapendekezwa)

1. Anzisha Calculator Server

Fungua terminal na nenda kwenye saraka ya server:

cd calculator-server
mvn clean package
mvn spring-boot:run

Server itaanzishwa kwenye http://localhost:8080

Utapata matokeo kama haya:

Started CalculatorServerApplication in X.XXX seconds
Netty started on port 8080 (http)

2. Endesha Calculator Client

Fungua terminal mpya na nenda kwenye saraka ya client:

cd calculator-client
mvn clean package
mvn spring-boot:run

Client itaunganishwa na server, itafanya hesabu, na itaonyesha matokeo ya utiririshaji.

Chaguo 2: Kutumia Java moja kwa moja

1. Kamilisha na endesha server:

cd calculator-server
mvn clean package
java -jar target/calculator-server-0.0.1-SNAPSHOT.jar

2. Kamilisha na endesha client:

cd calculator-client
mvn clean package
java -jar target/calculator-client-0.0.1-SNAPSHOT.jar

Kupima Server Kwa Mikono

Unaweza pia kupima server ukitumia kivinjari cha wavuti au curl:

Kutumia kivinjari cha wavuti:

Tembelea: http://localhost:8080/calculate?a=10&b=5&op=add

Kutumia curl:

curl "http://localhost:8080/calculate?a=10&b=5&op=add" -H "Accept: text/event-stream"

Matokeo Yanayotarajiwa

Unapochukua client, unapaswa kuona matokeo ya utiririshaji kama ifuatavyo:

event:info
data:Calculating: 7.0 mul 5.0

event:result
data:35.0

Mifumo Inayoungwa Mkono

  • add - Addition (a + b)
  • sub - Subtraction (a - b)
  • mul - Multiplication (a * b)
  • div - Division (a / b, returns NaN if b = 0)

API Reference

GET /calculate

Parameters:

  • a (required): First number (double)
  • b (required): Second number (double)
  • op (required): Operation (add, sub, mul, div)

Response:

  • Content-Type: text/event-stream
  • Hurejesha Server-Sent Events yenye maendeleo ya hesabu na matokeo

Ombi la Mfano:

GET /calculate?a=7&b=5&op=mul HTTP/1.1
Host: localhost:8080
Accept: text/event-stream

Jibu la Mfano:

event: info
data: Calculating: 7.0 mul 5.0

event: result
data: 35.0

Kutatua Matatizo

Masuala Yanayojitokeza Mara kwa Mara

  1. Bandari 8080 tayari inatumika

    • Zima programu nyingine yoyote inayotumia bandari 8080
    • Au badilisha bandari ya server katika calculator-server/src/main/resources/application.yml
  2. Connection refused

    • Make sure the server is running before starting the client
    • Check that the server started successfully on port 8080
  3. Parameter name issues

    • This project includes Maven compiler configuration with -parameters flag
    • If you encounter parameter binding issues, ensure the project is built with this configuration

Stopping the Applications

  • Press Ctrl+C in the terminal where each application is running
  • Or use mvn spring-boot:stop ikiwa unaiendesha kama mchakato wa nyuma

Teknolojia Zinazotumika

  • Spring Boot 3.3.1 - Mfumo wa programu
  • Spring WebFlux - Mfumo wa wavuti wa ki-reactive
  • Project Reactor - Maktaba ya mitiririko ya ki-reactive
  • Netty - Server isiyozuia I/O
  • Maven - Zana ya kujenga programu
  • Java 17+ - Lugha ya programu

Hatua Zifuatazo

Jaribu kubadilisha msimbo ili:

  • Kuongeza mifumo mingine ya kihesabu
  • Kujumuisha utambuzi wa makosa kwa mifumo isiyo sahihi
  • Kuongeza ufuatiliaji wa maombi/jawabu
  • Kutekeleza uthibitishaji
  • Kuongeza majaribio ya kitengo

Kiarifa cha Kutohusika:
Nyaraka hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Nyaraka ya asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatubeba dhamana kwa kutoelewana au tafsiri potofu zitokanazo na matumizi ya tafsiri hii.