File tree Expand file tree Collapse file tree 1 file changed +10
-10
lines changed Expand file tree Collapse file tree 1 file changed +10
-10
lines changed Original file line number Diff line number Diff line change 11package cnet
22
33import (
4+ "bytes"
45 "net"
56 "time"
67
@@ -9,26 +10,27 @@ import (
910
1011type wsConn struct {
1112 * websocket.Conn
12- buff [] byte
13+ buff * bytes. Buffer
1314}
1415
15- //NewWebSocketConn converts a websocket.Conn into a net.Conn
16+ // NewWebSocketConn converts a websocket.Conn into a net.Conn
1617func NewWebSocketConn (websocketConn * websocket.Conn ) net.Conn {
1718 c := wsConn {
1819 Conn : websocketConn ,
20+ buff : & bytes.Buffer {},
1921 }
2022 return & c
2123}
2224
23- //Read is not threadsafe though thats okay since there
24- //should never be more than one reader
25+ // Read is not threadsafe though thats okay since there
26+ // should never be more than one reader
2527func (c * wsConn ) Read (dst []byte ) (int , error ) {
2628 ldst := len (dst )
2729 //use buffer or read new message
2830 var src []byte
29- if len ( c .buff ) > 0 {
30- src = c .buff
31- c .buff = nil
31+ if c .buff . Len ( ) > 0 {
32+ src = c .buff . Bytes ()
33+ c .buff . Reset ()
3234 } else if _ , msg , err := c .Conn .ReadMessage (); err == nil {
3335 src = msg
3436 } else {
@@ -41,9 +43,7 @@ func (c *wsConn) Read(dst []byte) (int, error) {
4143 n = copy (dst , src [:ldst ])
4244 //copy remainder into buffer
4345 r := src [ldst :]
44- lr := len (r )
45- c .buff = make ([]byte , lr )
46- copy (c .buff , r )
46+ c .buff .Write (r )
4747 } else {
4848 //copy all of src into dst
4949 n = copy (dst , src )
You can’t perform that action at this time.
0 commit comments