Server-Sent Events(SSE)
Github Source: https://github.com/gogf/examples/tree/main/httpserver/sse
Description
This example demonstrates how to implement Server-Sent Events (SSE) using GoFrame
. Server-Sent Events is a technology that allows a server to push updates to a client via HTTP
connection. Unlike WebSocket
, SSE
is unidirectional - only the server can send data to the client.
The example implements a simple SSE
server that streams responses character by character, simulating a real-time typing effect commonly seen in modern AI chat applications.
Requirements
Structure
- go.mod: The Go module file.
- main.go: The main application entry point with SSE implementation.
Features
- Server-Sent Events implementation
- Character-by-character streaming response for simulated AI chat
- Proper HTTP headers for SSE
Setup
-
Clone the repository:
git clone https://github.com/gogf/examples.git
cd examples/httpserver/sse -
Install the dependencies:
go mod tidy
-
Run the application:
go run main.go
Usage
-
Run the example:
go run main.go
-
The server will start at: http://127.0.0.1:8000
-
Access the SSE endpoint:
- In a browser, navigate to: http://127.0.0.1:8000/ai/chat
- You should see words appearing one by one with a typing effect
Implementation Details
The SSE implementation includes:
-
Setting the correct HTTP headers for SSE:
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
-
Streaming response with proper flushing
-
Simulated typing delay using
time.Sleep
-
Simple HTTP routing with GoFrame's router
Notes
SSE
connections remain open until explicitly closed by the client- The server must flush the response buffer after each message
- For production use, consider implementing reconnection logic and event IDs
SSE
works over regularHTTP/HTTPS
and supports automatic reconnection in browsers