// 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 websocketProxyDial(urlString, origin string) (ws *websocket.Conn, err error) { if os.Getenv("HTTP_PROXY") == "" { return websocket.Dial(urlString, "", origin) } purl, err := url.Parse(os.Getenv("HTTP_PROXY")) if err != nil { return nil, err } config, err := websocket.NewConfig(urlString, origin) if err != nil { return nil, err } client, err := websocketHTTPConnect(purl.Host, urlString) if err != nil { return nil, err } switch config.Location.Scheme { case "ws": case "wss": tlsClient := tls.Client(client, &tls.Config{ ServerName: strings.Split(config.Location.Host, ":")[0], }) err := tlsClient.Handshake() if err != nil { tlsClient.Close() return nil, err } client = tlsClient default: return nil, errors.New("invalid websocket schema") } return websocket.NewClient(config, client) }