server.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2015 The Gorilla WebSocket Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // +build ignore
  5. package main
  6. import (
  7. "flag"
  8. "log"
  9. "net/http"
  10. "github.com/gorilla/websocket"
  11. )
  12. var addr = flag.String("addr", "localhost:8081", "http service address")
  13. var upgrader = websocket.Upgrader{} // use default options
  14. func echo(w http.ResponseWriter, r *http.Request) {
  15. if r.URL.Path != "/" {
  16. http.Error(w, "Not found", 404)
  17. return
  18. }
  19. if r.Method != "GET" {
  20. http.Error(w, "Method not allowed", 405)
  21. return
  22. }
  23. c, err := upgrader.Upgrade(w, r, nil)
  24. if err != nil {
  25. log.Print("upgrade:", err)
  26. return
  27. }
  28. defer c.Close()
  29. for {
  30. mt, message, err := c.ReadMessage()
  31. if err != nil {
  32. log.Println("read:", err)
  33. break
  34. }
  35. log.Printf("recv: %s", message)
  36. err = c.WriteMessage(mt, message)
  37. if err != nil {
  38. log.Println("write:", err)
  39. break
  40. }
  41. }
  42. }
  43. func main() {
  44. flag.Parse()
  45. log.SetFlags(0)
  46. http.HandleFunc("/", echo)
  47. err := http.ListenAndServe(*addr, nil)
  48. if err != nil {
  49. log.Fatal("ListenAndServe: ", err)
  50. }
  51. }