Files
2026-01-18 18:20:40 +08:00

89 lines
1.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package websocket
//
//import (
// "log"
// "net/http"
// "sync"
//
// "github.com/gogf/gf/v2/net/ghttp"
// "github.com/gorilla/websocket"
//)
//
//// 定义 WebSocket 升级器
//var upgrader = websocket.Upgrader{
// CheckOrigin: func(r *http.Request) bool {
// return true
// },
//}
//
//// 存储客户端连接
//var (
// clients = make(map[*websocket.Conn]bool)
// clientsMu sync.Mutex // 保护 clients map 的互斥锁
// broadcast = make(chan string, 256) // 广播信息通道,带缓冲
//)
//
//// 初始化广播处理(只启动一次)
//var once sync.Once
//
//// HandlerConnection 处理websocket连接
//func HandlerConnectionV1(r *ghttp.Request) {
// // 启动广播处理 goroutine只启动一次
// once.Do(func() {
// go handleBroadcast()
// })
//
// ws, err := upgrader.Upgrade(r.Response.Writer, r.Request, nil)
// if err != nil {
// log.Printf("upgrade error: %v", err)
// return
// }
// defer func() {
// clientsMu.Lock()
// delete(clients, ws)
// clientsMu.Unlock()
// ws.Close()
// }()
//
// // 注册新客户端
// clientsMu.Lock()
// clients[ws] = true
// clientsMu.Unlock()
//
// for {
// var message string
// err := ws.ReadJSON(&message)
// if err != nil {
// log.Printf("read error: %v", err)
// clientsMu.Lock()
// delete(clients, ws)
// clientsMu.Unlock()
// break
// }
// // 将消息发送到广播通道
// select {
// case broadcast <- message:
// default:
// log.Printf("broadcast channel full, dropping message")
// }
// }
//}
//
//// 将广播通道给所有的用户
//func handleBroadcast() {
// for {
// message := <-broadcast
// clientsMu.Lock()
// for client := range clients {
// err := client.WriteJSON(message)
// if err != nil {
// log.Printf("write error: %v", err)
// client.Close()
// delete(clients, client)
// }
// }
// clientsMu.Unlock()
// }
//}