Hi, I made a few changes to this code to make it work with gin-gonic, do you know what's going on?

https://stackoverflow.com/questions/44641773/gin-gonic-and-gorilla-websocket-does-not-propagate-message

https://github.com/utiq/go-in-5-minutes/tree/master/episode4

Comment From: ljluestc

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gin-gonic/gin"
    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool {
        // Allow all connections for simplicity
        return true
    },
}

func main() {
    r := gin.Default()

    // Define a route to handle WebSocket connections
    r.GET("/ws", handleWebSocket)

    // Run the Gin server
    if err := r.Run(":8080"); err != nil {
        log.Fatal(err)
    }
}

// handleWebSocket handles the WebSocket connections
func handleWebSocket(c *gin.Context) {
    // Upgrade the HTTP connection to a WebSocket connection
    conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
    if err != nil {
        log.Println("Failed to upgrade connection:", err)
        c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to upgrade WebSocket"})
        return
    }
    defer conn.Close()

    // Handle incoming messages and send a reply
    for {
        // Read a message from the WebSocket connection
        _, message, err := conn.ReadMessage()
        if err != nil {
            log.Println("Error reading message:", err)
            break
        }

        // Log the received message
        fmt.Println("Received:", string(message))

        // Send a message back to the client
        err = conn.WriteMessage(websocket.TextMessage, []byte("Hello from server"))
        if err != nil {
            log.Println("Error sending message:", err)
            break
        }
    }
}