package ws import ( "net" "time" "github.com/gorilla/websocket" ) type websocketConn struct { *websocket.Conn rb []byte } func WebsocketServerConn(conn *websocket.Conn) net.Conn { return &websocketConn{ Conn: conn, } } func (c *websocketConn) Read(b []byte) (n int, err error) { if len(c.rb) == 0 { _, c.rb, err = c.ReadMessage() } n = copy(b, c.rb) c.rb = c.rb[n:] return } func (c *websocketConn) Write(b []byte) (n int, err error) { err = c.WriteMessage(websocket.BinaryMessage, b) n = len(b) return } func (c *websocketConn) SetDeadline(t time.Time) error { if err := c.SetReadDeadline(t); err != nil { return err } return c.SetWriteDeadline(t) }