File tree Expand file tree Collapse file tree 1 file changed +24
-11
lines changed
Expand file tree Collapse file tree 1 file changed +24
-11
lines changed Original file line number Diff line number Diff line change @@ -130,28 +130,41 @@ func (w *webSocketClient) listenWebSocket() {
130130 }
131131}
132132
133- func (w * webSocketClient ) forwardWebSocketData (message []byte ) error {
134- var wsMsg webSocketReceiveMessage
135- err := json .Unmarshal (message , & wsMsg )
136- if err != nil {
137- return err
138- }
139- if wsMsg .ID == "" { // e.g. keep-alive messages
140- return nil
141- }
133+ func (w * webSocketClient ) getSubAndHandleCompletion (wsMsg webSocketReceiveMessage ) (* subscription , error ) {
142134 w .subscriptions .Lock ()
143135 defer w .subscriptions .Unlock ()
144136 sub , success := w .subscriptions .map_ [wsMsg .ID ]
145137 if ! success {
146- return fmt .Errorf ("received message for unknown subscription ID '%s'" , wsMsg .ID )
138+ return nil , fmt .Errorf ("received message for unknown subscription ID '%s'" , wsMsg .ID )
147139 }
148140 if sub .hasBeenUnsubscribed {
149- return nil
141+ return nil , nil
150142 }
151143 if wsMsg .Type == webSocketTypeComplete {
152144 sub .hasBeenUnsubscribed = true
153145 w .subscriptions .map_ [wsMsg .ID ] = sub
154146 reflect .ValueOf (sub .interfaceChan ).Close ()
147+ return nil , nil
148+ }
149+
150+ return & sub , nil
151+ }
152+
153+ func (w * webSocketClient ) forwardWebSocketData (message []byte ) error {
154+ var wsMsg webSocketReceiveMessage
155+ err := json .Unmarshal (message , & wsMsg )
156+ if err != nil {
157+ return err
158+ }
159+ if wsMsg .ID == "" { // e.g. keep-alive messages
160+ return nil
161+ }
162+
163+ sub , err := w .getSubAndHandleCompletion (wsMsg )
164+ if err != nil {
165+ return err
166+ }
167+ if sub == nil {
155168 return nil
156169 }
157170
You can’t perform that action at this time.
0 commit comments