mirror of
https://github.com/bolkedebruin/rdpgw.git
synced 2025-08-15 05:13:47 +02:00
42 lines
No EOL
714 B
Go
42 lines
No EOL
714 B
Go
package transport
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gorilla/websocket"
|
|
)
|
|
|
|
type WSPKT struct {
|
|
Conn *websocket.Conn
|
|
}
|
|
|
|
func NewWS(c *websocket.Conn) (*WSPKT, error) {
|
|
w := &WSPKT{Conn: c}
|
|
return w, nil
|
|
}
|
|
|
|
func (t *WSPKT) ReadPacket() (n int, b []byte, err error) {
|
|
mt, msg, err := t.Conn.ReadMessage()
|
|
if err != nil {
|
|
return 0, []byte{0, 0}, err
|
|
}
|
|
|
|
if mt == websocket.BinaryMessage {
|
|
return len(msg), msg, nil
|
|
}
|
|
|
|
return len(msg), msg, errors.New("not a binary packet")
|
|
}
|
|
|
|
func (t *WSPKT) WritePacket(b []byte) (n int, err error) {
|
|
err = t.Conn.WriteMessage(websocket.BinaryMessage, b)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return len(b), nil
|
|
}
|
|
|
|
func (t *WSPKT) Close() error {
|
|
return t.Conn.Close()
|
|
} |