Golang WebSocket无法连接问题求助(附完整代码)
Golang WebSocket连接错误排查求助
连接Golang WebSocket时出现错误,错误截图如下:
以下是我的代码实现:
route.go中的路由配置
func Setup(app *fiber.App) { app.Use(cache.New(cache.Config{ Next: func(c *fiber.Ctx) bool { return strings.Contains(c.Route().Path, "/chat/ws") }, })) admin_route.Get("/chat/ws", websocket.New(admin.WebsocketChat)) go admin.SocketManager() }
admin包内的WebSocket处理及管理代码
var ( register = make(chan *websocket.Conn) unregister = make(chan *websocket.Conn) clients = make(map[*websocket.Conn]bool) ) func SocketListener(c *websocket.Conn) { // Handle incoming messages from WebSocket connection for { messageType, message, err := c.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { log.Println("read error:", err) } return } if messageType == websocket.TextMessage { log.Println("got text message:", string(message)) // Broadcast the message to all connected clients for client := range clients { err := client.WriteMessage(websocket.TextMessage, message) if err != nil { log.Println("error writing message:", err) return } } } else { log.Println("received message of type:", messageType) } } } func WebsocketChat(c *websocket.Conn) { register <- c defer func() { unregister <- c c.Close() }() go SocketListener(c) } func SocketManager() { for { select { case c := <-register: clients[c] = true case c := <-unregister: delete(clients, c) } } }
我无法定位代码中的问题,相关论坛也缺少此类问题的解决方案,特此求助。
内容的提问来源于stack exchange,提问作者Danendra
相关产品推荐
相关产品推荐

