main.go 962 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/gorilla/websocket"
  6. "net/http"
  7. "os"
  8. )
  9. var ListenAddress string
  10. var upGrader = websocket.Upgrader{
  11. CheckOrigin: func(r *http.Request) bool {
  12. return true
  13. },
  14. }
  15. func ping(c *gin.Context) {
  16. ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
  17. if err != nil {
  18. return
  19. }
  20. defer ws.Close()
  21. for {
  22. mt, message, err := ws.ReadMessage()
  23. if err != nil {
  24. break
  25. }
  26. if string(message) == "ping" {
  27. message = []byte("pong")
  28. }
  29. err = ws.WriteMessage(mt, message)
  30. if err != nil {
  31. break
  32. }
  33. }
  34. }
  35. func main() {
  36. ListenAddress = os.Getenv("listen")
  37. if ListenAddress == "" {
  38. fmt.Println("No environment variable 'listen', use default value ':9090'")
  39. ListenAddress = ":9090"
  40. }
  41. r := gin.Default()
  42. r.GET("/api/ws/ping", ping)
  43. r.GET("/api/hello", hello)
  44. r.Run(ListenAddress)
  45. }
  46. func hello(context *gin.Context) {
  47. context.Writer.WriteString("hello")
  48. context.Status(200)
  49. }