ws.go 860 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package config
  2. import (
  3. "flag"
  4. "net/http"
  5. "github.com/yuguorong/go/log"
  6. "github.com/gorilla/websocket"
  7. )
  8. var addr = flag.String("addr", "localhost:8990", "http config address")
  9. var upgrader = websocket.Upgrader{
  10. // 解决跨域问题
  11. CheckOrigin: func(r *http.Request) bool {
  12. return true
  13. },
  14. } // use default options
  15. func ws(w http.ResponseWriter, r *http.Request) {
  16. c, err := upgrader.Upgrade(w, r, nil)
  17. if err != nil {
  18. log.Error("upgrade:", err)
  19. return
  20. }
  21. defer c.Close()
  22. for {
  23. mt, message, err := c.ReadMessage()
  24. if err != nil {
  25. log.Error("read:", err)
  26. break
  27. }
  28. log.Infof("recv: %s", message)
  29. err = c.WriteMessage(mt, message)
  30. if err != nil {
  31. log.Info("write:", err)
  32. break
  33. }
  34. }
  35. }
  36. func WebsocketEntry() {
  37. flag.Parse()
  38. http.HandleFunc("/ws", ws)
  39. log.Info(*addr)
  40. log.Fatal(http.ListenAndServe(*addr, nil))
  41. }