1
0
forked from x/icebergs
icebergs/misc/websocket/websocket.go
2023-05-14 16:01:25 +08:00

30 lines
677 B
Go

package websocket
import (
"net"
"net/http"
"net/url"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/toolkits/task"
"shylinux.com/x/websocket"
)
type Conn struct {
*websocket.Conn
lock task.Lock
}
func (c *Conn) WriteMessage(messageType int, data []byte) error {
defer c.lock.Lock()()
return c.Conn.WriteMessage(messageType, data)
}
func Upgrade(w http.ResponseWriter, r *http.Request) (*Conn, error) {
conn, e := websocket.Upgrade(w, r, nil, ice.MOD_BUFS, ice.MOD_BUFS)
return &Conn{Conn: conn}, e
}
func NewClient(c net.Conn, u *url.URL) (*Conn, error) {
conn, _, e := websocket.NewClient(c, u, nil, ice.MOD_BUFS, ice.MOD_BUFS)
return &Conn{Conn: conn}, e
}