Sobes.tech
Junior — Middle

Vai jums ir pieredze ar HTTP soketprotokola un tā realizācijām?

sobes.tech AI

Atbilde no AI

Jā, pieredze ar HTTP soketēm un to realizācijām Go valodā parasti ir saistīta ar WebSocket izmantošanu — protokolu, kas nodrošina divvirzienu saziņu virs HTTP.

Go valodā bieži izmanto bibliotēku gorilla/websocket. Tā ļauj izveidot serverus un klientus, kas var apmainīties ar ziņojumiem reāllaikā.

Piemērs vienkāršam WebSocket serverim Go valodā:

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("Atjaunināšanas kļūda:", err)
        return
    }
    defer conn.Close()

    for {
        messageType, message, err := conn.ReadMessage()
        if err != nil {
            log.Println("Lasīšanas kļūda:", err)
            break
        }
        log.Printf("Saņemts: %s", message)

        err = conn.WriteMessage(messageType, message)
        if err != nil {
            log.Println("Rakstīšanas kļūda:", err)
            break
        }
    }
}

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

Šis serveris pieņem WebSocket savienojumus, lasa ziņojumus un atgriež tos atpakaļ (ekso). Tas ir pamata piemērs, ko var paplašināt dažādu protokolu īstenošanai virs WebSocket.