This content originally appeared on DEV Community and was authored by Benita Clarissa
Pada kali ini, kita akan menggunakan package go-sse.
Untuk install package tersebut, silakan eksekusi instruksi berikut pada terminal/command prompt.
go get github.com/alexandrevicenzi/go-sse
.
Di bawah ini adalah contoh kode program implementasi SSE.
package main
import (
"encoding/json"
"net/http"
"strconv"
"time"
"github.com/alexandrevicenzi/go-sse"
)
func main() {
name := "Latest Event"
channel := "new-update-channel"
const jsonData = `
{
"stringField": "Value",
"intField": 123,
"floatField": 3.14159,
"booleanField": true
}
`
var sseData map[string]string
json.Unmarshal([]byte(jsonData), &sseData)
s := sse.NewServer(nil)
defer s.Shutdown()
// Konfigurasi route http
http.Handle("/", http.FileServer(http.Dir("./static"))) // dummy static html file yang akan menampilkan event source
http.Handle("/events/", s)
// Mengirimkan data setiap 3 detik sekali
go func() {
for {
id := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
sseData["timestamp"] = time.Now().Format("2006-01-02 15:04:05")
data, err := json.Marshal(sseData)
if err == nil {
s.SendMessage("/events/"+channel, sse.NewMessage(id, string(data), name))
}
time.Sleep(3 * time.Second)
}
}()
http.ListenAndServe(":8080", nil)
}
Setelah itu, kita jalankan function Main.
go run main.go
Lalu, amati hasilnya.
C:\Users\benita.clarissa\Documents\go\src\github.com\Bhinneka\coba-coba>go run main.go
go-sse: 2021/11/28 10:52:29 server started.
go-sse: 2021/11/28 10:52:31 channel '/events/new-update-channel' created.
go-sse: 2021/11/28 10:52:31 new client connected to channel '/events/new-update-channel'.
go-sse: 2021/11/28 10:52:32 message sent to channel '/events/new-update-channel'.
go-sse: 2021/11/28 10:52:35 message sent to channel '/events/new-update-channel'.
go-sse: 2021/11/28 10:52:38 message sent to channel '/events/new-update-channel'.
SSE dari sisi backend sudah kita siapkan. Namun, kita perlu melakukan development agar client dapat menerima data yang di-push tersebut. Oleh karena itu, kita perlu menulis script dari sisi frontend yang akan berfungsi sebagai client dari SSE ini.
Selanjutnya
Pada post selanjutnya, kita akan melihat bagaimana data yang di-push server diterima dan ditampilkan oleh client (frontend) menggunakan ReactJS.
Referensi
Cook, D. (2014). Data Push Apps with HTML5 SSE: Pragmatic Solutions for Real-World Clients (1st ed.) [E-book]. O’Reilly Media.
This content originally appeared on DEV Community and was authored by Benita Clarissa
Benita Clarissa | Sciencx (2021-12-01T04:34:20+00:00) Implementasi SSE pada Golang (Backend). Retrieved from https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.