MCPcopy
hub / github.com/gorilla/websocket / main

Function main

examples/echo/client.go:23–83  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

21var addr = flag.String("addr", "localhost:8080", "http service address")
22
23func main() {
24 flag.Parse()
25 log.SetFlags(0)
26
27 interrupt := make(chan os.Signal, 1)
28 signal.Notify(interrupt, os.Interrupt)
29
30 u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo"}
31 log.Printf("connecting to %s", u.String())
32
33 c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
34 if err != nil {
35 log.Fatal("dial:", err)
36 }
37 defer c.Close()
38
39 done := make(chan struct{})
40
41 go func() {
42 defer close(done)
43 for {
44 _, message, err := c.ReadMessage()
45 if err != nil {
46 log.Println("read:", err)
47 return
48 }
49 log.Printf("recv: %s", message)
50 }
51 }()
52
53 ticker := time.NewTicker(time.Second)
54 defer ticker.Stop()
55
56 for {
57 select {
58 case <-done:
59 return
60 case t := <-ticker.C:
61 err := c.WriteMessage(websocket.TextMessage, []byte(t.String()))
62 if err != nil {
63 log.Println("write:", err)
64 return
65 }
66 case <-interrupt:
67 log.Println("interrupt")
68
69 // Cleanly close the connection by sending a close message and then
70 // waiting (with timeout) for the server to close the connection.
71 err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
72 if err != nil {
73 log.Println("write close:", err)
74 return
75 }
76 select {
77 case <-done:
78 case <-time.After(time.Second):
79 }
80 return

Callers

nothing calls this directly

Calls 6

FormatCloseMessageFunction · 0.92
StringMethod · 0.80
ReadMessageMethod · 0.80
WriteMessageMethod · 0.80
DialMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected