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:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user