|
@@ -95,6 +95,8 @@ func (h *Hub) GetID() uint16 {
|
|
}
|
|
}
|
|
|
|
|
|
// 添加中间件
|
|
// 添加中间件
|
|
|
|
+// 如果中间件函数返回为空,表示处理完成,通过
|
|
|
|
+// 如果中间件函数返回 NEXT_MIDDLE,表示需要下一个中间件函数处理;如果没有下一函数则默认通过
|
|
func (h *Hub) UseMiddle(middleFunc MiddleFunc) {
|
|
func (h *Hub) UseMiddle(middleFunc MiddleFunc) {
|
|
h.middle = append(h.middle, middleFunc)
|
|
h.middle = append(h.middle, middleFunc)
|
|
}
|
|
}
|
|
@@ -276,11 +278,18 @@ func (h *Hub) requestFromNet(request *RequestData) {
|
|
for _, mdFunc := range h.middle {
|
|
for _, mdFunc := range h.middle {
|
|
rsp := mdFunc(request)
|
|
rsp := mdFunc(request)
|
|
if rsp != nil {
|
|
if rsp != nil {
|
|
|
|
+ // NEXT_MIDDLE 表示当前的函数没有处理完成,还需要下个中间件处理
|
|
|
|
+ if rsp.State == config.NEXT_MIDDLE {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ // 返回消息
|
|
if request.Id != 0 {
|
|
if request.Id != 0 {
|
|
rsp.Id = request.Id
|
|
rsp.Id = request.Id
|
|
request.conn.sendResponse <- rsp
|
|
request.conn.sendResponse <- rsp
|
|
}
|
|
}
|
|
return
|
|
return
|
|
|
|
+ } else {
|
|
|
|
+ break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
sub, ok := h.subscribes.Load(cmd)
|
|
sub, ok := h.subscribes.Load(cmd)
|