Nats.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package nats
  2. import (
  3. "Ic_ouath/global"
  4. "Ic_ouath/utils"
  5. "fmt"
  6. "github.com/bytedance/sonic"
  7. "github.com/nats-io/nats.go"
  8. )
  9. var Nats *nats.Conn
  10. // UserResponse 定义响应结构体
  11. type UserResponse struct {
  12. Code int `json:"code"`
  13. Message string `json:"message"`
  14. User any `json:"user,omitempty"`
  15. }
  16. func SetupNats() {
  17. var err error
  18. Nats, err = nats.Connect(global.NatsSetting.NatsServerUrl)
  19. //Nats, err = nats.Connect("nats://116.204.6.184:4222")
  20. if err != nil {
  21. fmt.Println("nats 连接失败!")
  22. panic(err)
  23. }
  24. fmt.Println("nats OK!")
  25. go NatsInit()
  26. }
  27. func NatsInit() {
  28. _, _ = Nats.Subscribe("login_token_validation", func(msg *nats.Msg) {
  29. // fmt.Println("login_token_validation msg:", string(msg.Data))
  30. verification, user := utils.Verification(string(msg.Data))
  31. response := UserResponse{
  32. Code: 0,
  33. Message: "",
  34. User: nil,
  35. }
  36. if verification {
  37. response.Code = 200
  38. response.Message = "success"
  39. response.User = user
  40. } else {
  41. response.Code = 201
  42. response.Message = "请重新登录"
  43. response.User = user
  44. }
  45. marshal, err := sonic.Marshal(response)
  46. if err != nil {
  47. fmt.Println("nats 响应失败!")
  48. panic(err)
  49. }
  50. _ = Nats.Publish(msg.Reply, marshal)
  51. })
  52. }