Implementasi SSE pada Golang (Backend)

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…


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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » Implementasi SSE pada Golang (Backend)." Benita Clarissa | Sciencx - Wednesday December 1, 2021, https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/
HARVARD
Benita Clarissa | Sciencx Wednesday December 1, 2021 » Implementasi SSE pada Golang (Backend)., viewed ,<https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/>
VANCOUVER
Benita Clarissa | Sciencx - » Implementasi SSE pada Golang (Backend). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/
CHICAGO
" » Implementasi SSE pada Golang (Backend)." Benita Clarissa | Sciencx - Accessed . https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/
IEEE
" » Implementasi SSE pada Golang (Backend)." Benita Clarissa | Sciencx [Online]. Available: https://www.scien.cx/2021/12/01/implementasi-sse-pada-golang-backend/. [Accessed: ]
rf:citation
» Implementasi SSE pada Golang (Backend) | Benita Clarissa | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.