diff --git a/.gitignore b/.gitignore index 3b735ec..33dcd20 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,11 @@ # Go workspace file go.work +/examples/tcp/server/server +/examples/tcp/client/client +/examples/udp/server/server +/examples/udp/client/client +/examples/unix/server/server +/examples/unix/client/client +/examples/websocket/server/server +/examples/websocket/client/client diff --git a/socketx_server.go b/socketx_server.go index 11fbe7c..50976d3 100644 --- a/socketx_server.go +++ b/socketx_server.go @@ -7,6 +7,7 @@ import ( "github.com/civet148/socketx/api" "github.com/civet148/socketx/types" "sync" + "time" ) type SocketHandler interface { @@ -136,8 +137,9 @@ func (w *SocketServer) recvSocket(s api.Socket) (msg *api.SockMessage, err error func (w *SocketServer) onAccept(s api.Socket) { c := w.addClient(s) - go w.readSocket(s) w.handler.OnAccept(c) + time.Sleep(100 * time.Millisecond) + go w.readSocket(s) } func (w *SocketServer) onClose(s api.Socket) { diff --git a/tcpsock/tcp_socket.go b/tcpsock/tcp_socket.go index eceecbd..7208a3c 100644 --- a/tcpsock/tcp_socket.go +++ b/tcpsock/tcp_socket.go @@ -7,10 +7,8 @@ import ( "github.com/civet148/log" "github.com/civet148/socketx/api" "github.com/civet148/socketx/types" - "io" "net" "sync" - "time" ) type socket struct { @@ -95,24 +93,15 @@ func (s *socket) Recv(length int) (msg *api.SockMessage, err error) { left = length data := s.makeBuffer(length) -DATA_RECV: var n int if once { if n, err = s.conn.Read(data); err != nil { - if err == io.EOF { - time.Sleep(time.Millisecond) - goto DATA_RECV - } return nil, log.Errorf("read data from %s error [%v]", s.GetRemoteAddr(), err.Error()) } recv = n } else { for left > 0 { if n, err = s.conn.Read(data[recv:]); err != nil { - if err == io.EOF { - time.Sleep(time.Millisecond) - goto DATA_RECV - } return nil, log.Errorf("read data from %s error [%v]", s.GetRemoteAddr(), err.Error()) } left -= n