Files
komari-agent/ws/safaConn.go
2025-06-21 16:21:30 +08:00

59 lines
1.1 KiB
Go

package ws
import (
"sync"
"time"
"github.com/gorilla/websocket"
)
type SafeConn struct {
conn *websocket.Conn
mu sync.Mutex
}
func NewSafeConn(conn *websocket.Conn) *SafeConn {
return &SafeConn{
conn: conn,
mu: sync.Mutex{},
}
}
func (sc *SafeConn) WriteMessage(messageType int, data []byte) error {
sc.mu.Lock()
defer sc.mu.Unlock()
return sc.conn.WriteMessage(messageType, data)
}
func (sc *SafeConn) WriteJSON(v interface{}) error {
sc.mu.Lock()
defer sc.mu.Unlock()
return sc.conn.WriteJSON(v)
}
func (sc *SafeConn) Close() error {
sc.mu.Lock()
defer sc.mu.Unlock()
return sc.conn.Close()
}
func (sc *SafeConn) ReadMessage() (int, []byte, error) {
// sc.mu.Lock()
// defer sc.mu.Unlock()
return sc.conn.ReadMessage()
}
func (sc *SafeConn) ReadJSON(v interface{}) error {
// sc.mu.Lock()
// defer sc.mu.Unlock()
return sc.conn.ReadJSON(v)
}
func (sc *SafeConn) SetReadDeadline(t time.Time) error {
// sc.mu.Lock()
// defer sc.mu.Unlock()
return sc.conn.SetReadDeadline(t)
}
func (sc *SafeConn) GetConn() *websocket.Conn {
sc.mu.Lock()
defer sc.mu.Unlock()
return sc.conn
}