1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| package main
import ( "fmt" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "log" "net/http" )
var wsupgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, }
func wshandler(hub *Hub, writer http.ResponseWriter, request *http.Request) { conn, err := wsupgrader.Upgrade(writer, request, nil) if err != nil { log.Panicln(err) return } client := &Client{Hub: hub, Conn: conn, Send: make(chan []byte, 256)} client.Hub.Register <- client go client.writePump() for { _, _, err := conn.ReadMessage() if err != nil { if websocket.IsCloseError(err, websocket.CloseNormalClosure, websocket.CloseGoingAway) { fmt.Println("连接正常关闭:", err) } else { fmt.Println("连接异常关闭:", err) } client.Hub.Unregister <- client break } } }
func WebSocketController(context *gin.Context, hub *Hub) { wshandler(hub, context.Writer, context.Request) }
|