1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-14 01:32:27 +08:00

feat: 优化MixMessage采用指针传参,减少2次拷贝 (#394)

This commit is contained in:
ForrestSu
2021-04-18 18:55:32 +08:00
committed by GitHub
parent fb1aa60ae8
commit 34f1335d17
3 changed files with 9 additions and 9 deletions

View File

@@ -35,7 +35,7 @@ officialAccount := wc.GetOfficialAccount(cfg)
// 传入request和responseWriter // 传入request和responseWriter
server := officialAccount.GetServer(req, rw) server := officialAccount.GetServer(req, rw)
//设置接收消息的处理方法 //设置接收消息的处理方法
server.SetMessageHandler(func(msg message.MixMessage) *message.Reply { server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {
//回复消息:演示回复用户发送的消息 //回复消息:演示回复用户发送的消息
text := message.NewText(msg.Content) text := message.NewText(msg.Content)

View File

@@ -27,10 +27,10 @@ type Server struct {
openID string openID string
messageHandler func(message.MixMessage) *message.Reply messageHandler func(*message.MixMessage) *message.Reply
RequestRawXMLMsg []byte RequestRawXMLMsg []byte
RequestMsg message.MixMessage RequestMsg *message.MixMessage
ResponseRawXMLMsg []byte ResponseRawXMLMsg []byte
ResponseMsg interface{} ResponseMsg interface{}
@@ -105,7 +105,7 @@ func (srv *Server) handleRequest() (reply *message.Reply, err error) {
if err != nil { if err != nil {
return return
} }
mixMessage, success := msg.(message.MixMessage) mixMessage, success := msg.(*message.MixMessage)
if !success { if !success {
err = errors.New("消息类型转换失败") err = errors.New("消息类型转换失败")
} }
@@ -160,14 +160,14 @@ func (srv *Server) getMessage() (interface{}, error) {
return srv.parseRequestMessage(rawXMLMsgBytes) return srv.parseRequestMessage(rawXMLMsgBytes)
} }
func (srv *Server) parseRequestMessage(rawXMLMsgBytes []byte) (msg message.MixMessage, err error) { func (srv *Server) parseRequestMessage(rawXMLMsgBytes []byte) (msg *message.MixMessage, err error) {
msg = message.MixMessage{} msg = &message.MixMessage{}
err = xml.Unmarshal(rawXMLMsgBytes, &msg) err = xml.Unmarshal(rawXMLMsgBytes, msg)
return return
} }
//SetMessageHandler 设置用户自定义的回调方法 //SetMessageHandler 设置用户自定义的回调方法
func (srv *Server) SetMessageHandler(handler func(message.MixMessage) *message.Reply) { func (srv *Server) SetMessageHandler(handler func(*message.MixMessage) *message.Reply) {
srv.messageHandler = handler srv.messageHandler = handler
} }

View File

@@ -22,7 +22,7 @@ openPlatform := wc.GetOpenPlatform(cfg)
// 传入request和responseWriter // 传入request和responseWriter
server := openPlatform.GetServer(req, rw) server := openPlatform.GetServer(req, rw)
//设置接收消息的处理方法 //设置接收消息的处理方法
server.SetMessageHandler(func(msg message.MixMessage) *message.Reply { server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {
if msg.InfoType == message.InfoTypeVerifyTicket { if msg.InfoType == message.InfoTypeVerifyTicket {
componentVerifyTicket, err := openPlatform.SetComponentAccessToken(msg.ComponentVerifyTicket) componentVerifyTicket, err := openPlatform.SetComponentAccessToken(msg.ComponentVerifyTicket)
if err != nil { if err != nil {