websocket.go 939 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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{
  10. ReadBufferSize: 1024,
  11. WriteBufferSize: 1024,
  12. CheckOrigin: func(r *http.Request) bool {
  13. return true
  14. },
  15. }
  16. func RegisterClient(c *gin.Context) {
  17. secret := c.Query("secret")
  18. if secret == "" {
  19. c.JSON(http.StatusOK, gin.H{
  20. "success": false,
  21. "message": "secret 为空",
  22. })
  23. return
  24. }
  25. user := model.User{Username: c.Param("username")}
  26. err := user.FillUserByUsername()
  27. if secret != user.ClientSecret {
  28. c.JSON(http.StatusOK, gin.H{
  29. "success": false,
  30. "message": "用户名与密钥不匹配",
  31. })
  32. return
  33. }
  34. conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
  35. if err != nil {
  36. c.JSON(http.StatusOK, gin.H{
  37. "success": false,
  38. "message": err.Error(),
  39. })
  40. return
  41. }
  42. channel.RegisterClient(user.Id, conn)
  43. return
  44. }