Skip to content

Latest commit

 

History

History
202 lines (148 loc) · 5.58 KB

File metadata and controls

202 lines (148 loc) · 5.58 KB

Demo Penstriman HTTP Kalkulator

Projek ini menunjukkan penstriman HTTP menggunakan Server-Sent Events (SSE) dengan Spring Boot WebFlux. Ia terdiri daripada dua aplikasi:

  • Calculator Server: Perkhidmatan web reaktif yang melakukan pengiraan dan menstrim hasil menggunakan SSE
  • Calculator Client: Aplikasi klien yang menggunakan titik akhir penstriman

Prasyarat

  • Java 17 atau lebih tinggi
  • Maven 3.6 atau lebih tinggi

Struktur Projek

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

Cara Ia Berfungsi

  1. Calculator Server membuka /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
    • Menggunakan respons penstriman
    • Mencetak setiap acara ke konsol

Menjalankan Aplikasi

Pilihan 1: Menggunakan Maven (Disyorkan)

1. Mulakan Calculator Server

Buka terminal dan pergi ke direktori server:

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

Server akan bermula pada http://localhost:8080

Anda akan melihat output seperti:

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

2. Jalankan Calculator Client

Buka terminal baru dan pergi ke direktori klien:

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

Klien akan menyambung ke server, melakukan pengiraan, dan memaparkan hasil penstriman.

Pilihan 2: Menggunakan Java secara langsung

1. Kompil dan jalankan server:

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

2. Kompil dan jalankan klien:

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

Ujian Server Secara Manual

Anda juga boleh menguji server menggunakan pelayar web atau curl:

Menggunakan pelayar web:

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

Menggunakan curl:

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

Output Yang Dijangkakan

Apabila menjalankan klien, anda sepatutnya melihat output penstriman seperti:

event:info
data:Calculating: 7.0 mul 5.0

event:result
data:35.0

Operasi Yang Disokong

  • 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
  • Mengembalikan Server-Sent Events dengan kemajuan pengiraan dan hasil

Contoh Permintaan:

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

Contoh Respons:

event: info
data: Calculating: 7.0 mul 5.0

event: result
data: 35.0

Penyelesaian Masalah

Isu Biasa

  1. Port 8080 sudah digunakan

    • Hentikan mana-mana aplikasi lain yang menggunakan port 8080
    • Atau tukar port server dalam 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 jika menjalankan sebagai proses latar belakang

Teknologi Digunakan

  • Spring Boot 3.3.1 - Rangka kerja aplikasi
  • Spring WebFlux - Rangka kerja web reaktif
  • Project Reactor - Perpustakaan aliran reaktif
  • Netty - Server I/O tanpa sekatan
  • Maven - Alat binaan
  • Java 17+ - Bahasa pengaturcaraan

Langkah Seterusnya

Cuba ubah kod untuk:

  • Tambah lebih banyak operasi matematik
  • Sertakan pengendalian ralat untuk operasi tidak sah
  • Tambah log permintaan/respons
  • Laksanakan pengesahan
  • Tambah ujian unit

Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.