@@ -81,7 +81,7 @@ type Server struct {
81
81
Context context.Context
82
82
}
83
83
84
- // NewServer returns a fully configured and running WS test server
84
+ // NewServer returns a fully configured and running WS test server.
85
85
func NewServer (t testing.TB , opts ... func (* Server )) * Server {
86
86
t .Helper ()
87
87
@@ -152,7 +152,7 @@ func WithClosureAbnormalHandler(path string) func(*Server) {
152
152
}
153
153
}
154
154
155
- // NewServerWithEcho attaches an echo handler to Server.
155
+ // WithEchoHandler attaches an echo handler to Server.
156
156
func WithEchoHandler (path string ) func (* Server ) {
157
157
handler := func (w http.ResponseWriter , req * http.Request ) {
158
158
conn , err := (& websocket.Upgrader {}).Upgrade (w , req , w .Header ())
@@ -202,16 +202,31 @@ func WithCDPHandler(
202
202
done := make (chan struct {})
203
203
writeCh := make (chan cdproto.Message )
204
204
205
- // Read
206
205
go func () {
206
+ read := func (conn * websocket.Conn ) (* cdproto.Message , error ) {
207
+ _ , buf , err := conn .ReadMessage ()
208
+ if err != nil {
209
+ return nil , err
210
+ }
211
+
212
+ var msg cdproto.Message
213
+ decoder := jlexer.Lexer {Data : buf }
214
+ msg .UnmarshalEasyJSON (& decoder )
215
+ if err := decoder .Error (); err != nil {
216
+ return nil , err
217
+ }
218
+
219
+ return & msg , nil
220
+ }
221
+
207
222
for {
208
223
select {
209
224
case <- done :
210
225
return
211
226
default :
212
227
}
213
228
214
- msg , err := CDPReadMsg (conn )
229
+ msg , err := read (conn )
215
230
if err != nil {
216
231
close (done )
217
232
return
@@ -224,12 +239,31 @@ func WithCDPHandler(
224
239
fn (conn , msg , writeCh , done )
225
240
}
226
241
}()
227
- // Write
242
+
228
243
go func () {
244
+ write := func (conn * websocket.Conn , msg * cdproto.Message ) {
245
+ encoder := jwriter.Writer {}
246
+ msg .MarshalEasyJSON (& encoder )
247
+ if err := encoder .Error ; err != nil {
248
+ return
249
+ }
250
+
251
+ writer , err := conn .NextWriter (websocket .TextMessage )
252
+ if err != nil {
253
+ return
254
+ }
255
+ if _ , err := encoder .DumpTo (writer ); err != nil {
256
+ return
257
+ }
258
+ if err := writer .Close (); err != nil {
259
+ return
260
+ }
261
+ }
262
+
229
263
for {
230
264
select {
231
265
case msg := <- writeCh :
232
- CDPWriteMsg (conn , & msg )
266
+ write (conn , & msg )
233
267
case <- done :
234
268
return
235
269
}
@@ -243,9 +277,7 @@ func WithCDPHandler(
243
277
}
244
278
}
245
279
246
- // TODO: make a websocket.Conn wrapper for CDPxxx methods
247
-
248
- // CDPDefaultCDPHandler is a default handler for the CDP WS server
280
+ // CDPDefaultHandler is a default handler for the CDP WS server.
249
281
func CDPDefaultHandler (conn * websocket.Conn , msg * cdproto.Message , writeCh chan cdproto.Message , done chan struct {}) {
250
282
if msg .SessionID != "" && msg .Method != "" {
251
283
switch msg .Method {
@@ -276,40 +308,3 @@ func CDPDefaultHandler(conn *websocket.Conn, msg *cdproto.Message, writeCh chan
276
308
}
277
309
}
278
310
}
279
-
280
- // CDPReadMsg reads a CDP message to the provided Websocket connection
281
- func CDPReadMsg (conn * websocket.Conn ) (* cdproto.Message , error ) {
282
- _ , buf , err := conn .ReadMessage ()
283
- if err != nil {
284
- return nil , err
285
- }
286
-
287
- var msg cdproto.Message
288
- decoder := jlexer.Lexer {Data : buf }
289
- msg .UnmarshalEasyJSON (& decoder )
290
- if err := decoder .Error (); err != nil {
291
- return nil , err
292
- }
293
-
294
- return & msg , nil
295
- }
296
-
297
- // CDPWriteMsg writes a CDP message to the provided Websocket connection
298
- func CDPWriteMsg (conn * websocket.Conn , msg * cdproto.Message ) {
299
- encoder := jwriter.Writer {}
300
- msg .MarshalEasyJSON (& encoder )
301
- if err := encoder .Error ; err != nil {
302
- return
303
- }
304
-
305
- writer , err := conn .NextWriter (websocket .TextMessage )
306
- if err != nil {
307
- return
308
- }
309
- if _ , err := encoder .DumpTo (writer ); err != nil {
310
- return
311
- }
312
- if err := writer .Close (); err != nil {
313
- return
314
- }
315
- }
0 commit comments