Skip to content

Commit e5adb71

Browse files
fix: missing ws message (#38)
1 parent a03217e commit e5adb71

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed

router.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,17 @@ func (h *Handler) GraphQLHandle(w http.ResponseWriter, r *http.Request) {
9999
return
100100
}
101101

102-
h.addMetricsBeginRequest(gqlRequest)
103-
defer func(startedAt time.Time) {
104-
h.addMetricsEndRequest(gqlRequest, time.Since(startedAt))
105-
}(time.Now())
106-
107102
if err = h.validateGraphqlRequest(gqlRequest); err != nil {
108103
reporter.error = writeResponseErrors(err, w)
109104

110105
return
111106
}
112107

108+
h.addMetricsBeginRequest(gqlRequest)
109+
defer func(startedAt time.Time) {
110+
h.addMetricsEndRequest(gqlRequest, time.Since(startedAt))
111+
}(time.Now())
112+
113113
n := r.Context().Value(nextHandlerCtxKey).(caddyhttp.Handler)
114114

115115
if h.Caching != nil {

ws.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

132133
func (c *wsConn) writeErrorMessage(id interface{}, errMsg error) error {

0 commit comments

Comments
 (0)