@@ -95,27 +95,28 @@ func (c *wsConn) Read(b []byte) (n int, err error) {
9595 buff .Reset ()
9696 buff .Write (b [:n ])
9797
98- r := wsutil .NewServerSideReader (buff )
99-
100- if _ , e := r .NextFrame (); e != nil {
101- return n , err
102- }
98+ for {
99+ msg := new (wsMessage )
100+ request := new (graphql.Request )
101+ data , _ , e := wsutil .ReadClientData (buff )
103102
104- decoder := json .NewDecoder (r )
105- msg := & wsMessage {}
103+ if e != nil {
104+ return n , err
105+ }
106106
107- if e := decoder . Decode ( msg ); e != nil {
108- return n , err
109- }
107+ if e = json . Unmarshal ( data , msg ); e != nil {
108+ continue
109+ }
110110
111- if msg .Type == "subscribe" || msg .Type == "start" {
112- request := new (graphql.Request )
111+ if msg .Type != "subscribe" && msg .Type != "start" {
112+ continue
113+ }
113114
114- if e : = json .Unmarshal (msg .Payload , request ); e != nil {
115- return n , err
115+ if e = json .Unmarshal (msg .Payload , request ); e != nil {
116+ continue
116117 }
117118
118- if e : = c .onWsSubscribe (request ); e != nil {
119+ if e = c .onWsSubscribe (request ); e != nil {
119120 c .writeErrorMessage (msg .ID , e )
120121 c .writeCompleteMessage (msg .ID )
121122
@@ -124,9 +125,9 @@ func (c *wsConn) Read(b []byte) (n int, err error) {
124125
125126 c .request = request
126127 c .subscribeAt = time .Now ()
127- }
128128
129- return n , err
129+ return n , err
130+ }
130131}
131132
132133func (c * wsConn ) writeErrorMessage (id interface {}, errMsg error ) error {
0 commit comments