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
|
||
}
|