github.com/glide-im/glide@v1.6.0/internal/message_handler/sub.go (about)

     1  package message_handler
     2  
     3  import (
     4  	messages2 "github.com/glide-im/glide/im_service/messages"
     5  	"github.com/glide-im/glide/pkg/gate"
     6  	"github.com/glide-im/glide/pkg/logger"
     7  	"github.com/glide-im/glide/pkg/messages"
     8  	"github.com/glide-im/glide/pkg/subscription"
     9  	"github.com/glide-im/glide/pkg/subscription/subscription_impl"
    10  )
    11  
    12  // handleGroupMsg 分发群消息
    13  func (d *MessageHandler) handleGroupMsg(c *gate.Info, msg *messages.GlideMessage) error {
    14  
    15  	id := subscription.ChanID(msg.To)
    16  
    17  	cm := messages.ChatMessage{}
    18  	e := msg.Data.Deserialize(&cm)
    19  	if e != nil {
    20  		return e
    21  	}
    22  
    23  	m := subscription_impl.PublishMessage{
    24  		From:    subscription.SubscriberID(gate.NewID2(msg.From)),
    25  		Message: msg,
    26  		Type:    subscription_impl.TypeMessage,
    27  	}
    28  	err := d.def.GetGroupInterface().PublishMessage(id, &m)
    29  
    30  	if err != nil {
    31  		logger.E("dispatch group message error: %v", err)
    32  		notify := messages.NewMessage(msg.GetSeq(), messages2.ActionMessageFailed, nil)
    33  		d.enqueueMessage(c.ID, notify)
    34  	} else {
    35  		_ = d.ackChatMessage(c, &cm)
    36  	}
    37  
    38  	return nil
    39  }
    40  
    41  func (d *MessageHandler) handleAckGroupMsgRequest(c *gate.Info, msg *messages.GlideMessage) error {
    42  	ack := new(messages.AckGroupMessage)
    43  	if !d.unmarshalData(c, msg, ack) {
    44  		return nil
    45  	}
    46  	//err := msgdao.UpdateGroupMemberMsgState(ack.Gid, 0, ack.Mid, ack.Seq)
    47  	//if err != nil {
    48  	//
    49  	//}
    50  	return nil
    51  }