// This example demonstrates a trivial client. func ExampleDial() { origin := "http://localhost/" url := "ws://localhost:12345/ws" ws, err := websocket.Dial(url, "", origin) if err != nil { log.Fatal(err) } if _, err := ws.Write([]byte("hello, world!\n")); err != nil { log.Fatal(err) } var msg = make([]byte, 512) var n int if n, err = ws.Read(msg); err != nil { log.Fatal(err) } fmt.Printf("Received: %s.\n", msg[:n]) }
func streamLogs(logsRawURL string, filter string) error { var ( err error buffer [20480]byte event WSEvent ) logsURL, err := url.Parse(logsRawURL) if err != nil { return errgo.Mask(err, errgo.Any) } if logsURL.Scheme == "https" { logsURL.Scheme = "wss" } else { logsURL.Scheme = "ws" } logsURLString := fmt.Sprintf("%s&stream=true", logsURL.String()) if filter != "" { logsURLString = fmt.Sprintf("%s&filter=%s", logsURLString, filter) } conn, err := websocket.Dial(logsURLString, "", "http://scalingo-cli.local/"+config.Version) if err != nil { return errgo.Mask(err, errgo.Any) } for { n, err := conn.Read(buffer[:]) if err != nil { return errgo.Mask(err, errgo.Any) } debug.Println(string(buffer[:n])) err = json.Unmarshal(buffer[:n], &event) if err != nil { return errgo.Notef(err, "invalid JSON %v", string(buffer[:n])) } switch event.Type { case "ping": case "log": fmt.Println(strings.TrimSpace(event.Log)) } } }