Sobes.tech
Junior — Middle

Have you had experience working with the HTTP socket protocol and its implementations?

sobes.tech AI

Answer from AI

Yes, experience with WebSocket protocols in Go typically involves using libraries like gorilla/websocket. This library allows creating WebSocket servers and clients for real-time communication.

Example of a simple WebSocket server in Go:

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("Upgrade error:", err)
        return
    }
    defer conn.Close()

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

        err = conn.WriteMessage(messageType, message)
        if err != nil {
            log.Println("Write error:", err)
            break
        }
    }
}

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

This server accepts WebSocket connections, reads messages, and echoes them back. It’s a basic example that can be extended for various protocols over WebSocket.