43 lines
1.4 KiB
Go
43 lines
1.4 KiB
Go
package interceptor
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"fmt"
|
|
"omc/core/parse"
|
|
"time"
|
|
|
|
"github.com/aceld/zinx/ziface"
|
|
)
|
|
|
|
type GlobalInterceptor struct{}
|
|
|
|
func (m *GlobalInterceptor) Intercept(chain ziface.IChain) ziface.IcResp {
|
|
request := chain.Request() //从责任链中获取当前拦截器的输入数据
|
|
|
|
// 这一层是自定义拦截器处理逻辑,这里只是简单打印输入
|
|
iRequest := request.(ziface.IRequest) //注意:由于Zinx的Request类型,这里需要做一下断言转换
|
|
|
|
fmt.Println("\n\n=========自定义拦截器=====")
|
|
|
|
body, err := parse.RequestBodyDecode(iRequest, nil)
|
|
fmt.Printf("消息ID: %v \n", iRequest.GetMsgID())
|
|
fmt.Printf("原始数据: %v \n", body.RawData)
|
|
fmt.Printf("原始字符: %v \n", hex.EncodeToString(body.RawData))
|
|
fmt.Printf("原始字符: %v \n", string(body.RawData))
|
|
fmt.Printf("用户ID: %v \n", body.UID)
|
|
fmt.Printf("收到消息: %v %v \n", body.Name, body.Data)
|
|
fmt.Printf("错误:%v \n", err)
|
|
|
|
// return chain.Proceed(chain.Request()) //进入并执行下一个拦截器
|
|
|
|
iMessage := chain.GetIMessage()
|
|
resp := chain.ProceedWithIMessage(iMessage, iRequest)
|
|
fmt.Printf("目标消息ID: %v \n", iMessage.GetMsgID())
|
|
fmt.Printf("收到消息长度: %v \n", iMessage.GetDataLen())
|
|
fmt.Printf("信息时间:%v \n", time.Now().String())
|
|
|
|
fmt.Print("=========自定义拦截器=====\n\n\n")
|
|
|
|
return resp
|
|
}
|