Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

Commit af825f4

Browse files
committed
Move CDP read write into CDP handler
1 parent 6a12e2a commit af825f4

File tree

1 file changed

+41
-46
lines changed

1 file changed

+41
-46
lines changed

tests/ws/server.go

Lines changed: 41 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ type Server struct {
8181
Context context.Context
8282
}
8383

84-
// NewServer returns a fully configured and running WS test server
84+
// NewServer returns a fully configured and running WS test server.
8585
func NewServer(t testing.TB, opts ...func(*Server)) *Server {
8686
t.Helper()
8787

@@ -152,7 +152,7 @@ func WithClosureAbnormalHandler(path string) func(*Server) {
152152
}
153153
}
154154

155-
// NewServerWithEcho attaches an echo handler to Server.
155+
// WithEchoHandler attaches an echo handler to Server.
156156
func WithEchoHandler(path string) func(*Server) {
157157
handler := func(w http.ResponseWriter, req *http.Request) {
158158
conn, err := (&websocket.Upgrader{}).Upgrade(w, req, w.Header())
@@ -202,16 +202,31 @@ func WithCDPHandler(
202202
done := make(chan struct{})
203203
writeCh := make(chan cdproto.Message)
204204

205-
// Read
206205
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+
207222
for {
208223
select {
209224
case <-done:
210225
return
211226
default:
212227
}
213228

214-
msg, err := CDPReadMsg(conn)
229+
msg, err := read(conn)
215230
if err != nil {
216231
close(done)
217232
return
@@ -224,12 +239,31 @@ func WithCDPHandler(
224239
fn(conn, msg, writeCh, done)
225240
}
226241
}()
227-
// Write
242+
228243
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+
229263
for {
230264
select {
231265
case msg := <-writeCh:
232-
CDPWriteMsg(conn, &msg)
266+
write(conn, &msg)
233267
case <-done:
234268
return
235269
}
@@ -243,9 +277,7 @@ func WithCDPHandler(
243277
}
244278
}
245279

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.
249281
func CDPDefaultHandler(conn *websocket.Conn, msg *cdproto.Message, writeCh chan cdproto.Message, done chan struct{}) {
250282
if msg.SessionID != "" && msg.Method != "" {
251283
switch msg.Method {
@@ -276,40 +308,3 @@ func CDPDefaultHandler(conn *websocket.Conn, msg *cdproto.Message, writeCh chan
276308
}
277309
}
278310
}
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

Comments
 (0)