websocket.go 852 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/gorilla/websocket"
  5. "message-pusher/channel"
  6. "message-pusher/model"
  7. "net/http"
  8. )
  9. var upgrader = websocket.Upgrader{} // use default options
  10. func RegisterClient(c *gin.Context) {
  11. secret := c.Query("secret")
  12. if secret == "" {
  13. c.JSON(http.StatusOK, gin.H{
  14. "success": false,
  15. "message": "secret 为空",
  16. })
  17. return
  18. }
  19. user := model.User{Username: c.Param("username")}
  20. err := user.FillUserByUsername()
  21. if secret != user.ClientSecret {
  22. c.JSON(http.StatusOK, gin.H{
  23. "success": false,
  24. "message": "用户名与密钥不匹配",
  25. })
  26. return
  27. }
  28. conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
  29. if err != nil {
  30. c.JSON(http.StatusOK, gin.H{
  31. "success": false,
  32. "message": err.Error(),
  33. })
  34. return
  35. }
  36. channel.RegisterClient(user.Id, conn)
  37. return
  38. }