Sobes.tech
Junior — Middle

Ar turite patirties dirbant su HTTP soketų protokolais ir jų įgyvendinimais?

sobes.tech AI

Atsakymas iš AI

Taip, patirtis dirbant su HTTP lizdais ir jų įgyvendinimais Go dažniausiai yra susijusi su WebSocket naudojimu — protokolu, kuris užtikrina dvipusį ryšį virš HTTP.

Go kalboje dažnai naudojama biblioteka gorilla/websocket. Ji leidžia kurti serverius ir klientus, kurie gali keistis žinutėmis realiu laiku.

Pavyzdys paprasto WebSocket serverio Go kalba:

package main

import (
    "net/http"
    "github.com/gorilla/websocket"
    "log"
)

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("Atnaujinimo klaida:", err)
        return
    }
    defer conn.Close()

    for {
        messageType, message, err := conn.ReadMessage()
        if err != nil {
            log.Println("Skaitymo klaida:", err)
            break
        }
        log.Printf("Gauta: %s", message)

        err = conn.WriteMessage(messageType, message)
        if err != nil {
            log.Println("Rašymo klaida:", err)
            break
        }
    }
}

func main() {
    http.HandleFunc("/ws", wsHandler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Šis serveris priima WebSocket ryšius, skaito žinutes ir grąžina jas atgal (atspindulys). Tai yra pagrindinis pavyzdys, kurį galima išplėsti įvairių protokolų įgyvendinimui virš WebSocket.