main.go 962 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "github.com/gorilla/websocket"
  7. )
  8. var upgrader = websocket.Upgrader{
  9. CheckOrigin: func(r *http.Request) bool {
  10. return true
  11. },
  12. }
  13. func echo(w http.ResponseWriter, r *http.Request) {
  14. conn, err := upgrader.Upgrade(w, r, nil)
  15. if err != nil {
  16. log.Println("Upgrade error:", err)
  17. return
  18. }
  19. defer conn.Close()
  20. for key, values := range r.Header {
  21. for _, value := range values {
  22. message := fmt.Sprintf("%s: %s", key, value)
  23. if err := conn.WriteMessage(websocket.TextMessage, []byte(message)); err != nil {
  24. log.Println("WriteMessage error:", err)
  25. return
  26. }
  27. }
  28. }
  29. if err := conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")); err != nil {
  30. log.Println("CloseMessage error:", err)
  31. return
  32. }
  33. }
  34. func main() {
  35. http.HandleFunc("/echo", echo)
  36. log.Fatal(http.ListenAndServe(":8888", nil))
  37. }