msgsendconsumer.go 954 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package queue
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "slowwildws/internal/svc"
  7. "git.banshen.xyz/huangguangrong/slow_wild_queue/types"
  8. )
  9. type MsgSendConsumer struct {
  10. ctx context.Context
  11. svcCtx *svc.ServiceContext
  12. //Logger logx.Logger
  13. }
  14. func NewMsgSendConsumer(ctx context.Context, svc *svc.ServiceContext) *MsgSendConsumer {
  15. return &MsgSendConsumer{
  16. ctx: ctx,
  17. svcCtx: svc,
  18. //Logger: logx.WithContext(ctx),
  19. }
  20. }
  21. func (m *MsgSendConsumer) Consume(ctx context.Context, key, val string) error {
  22. if val == "" {
  23. return nil
  24. }
  25. fmt.Println("接到的消息:", val)
  26. var msgData types.MessagePushData
  27. err := json.Unmarshal([]byte(val), &msgData)
  28. if err != nil {
  29. fmt.Println("参数解析失败")
  30. return err
  31. }
  32. // 获取用户的conn
  33. conn := m.svcCtx.WsServer.GetConn(msgData.UserID)
  34. if conn == nil {
  35. fmt.Println("获取用户的链接信息失败")
  36. return nil
  37. }
  38. m.svcCtx.WsServer.Send(msgData, conn)
  39. return nil
  40. }