2 回答
TA贡献1796条经验 获得超4个赞
这实际上取决于您想用这种中间件做什么。
您始终可以编写一个“介于”另一个函数和实际处理程序之间的函数,该函数可以按照您建议的方式使用:
func myMiddleware(next func(socketio.Conn) error) func(socketio.Conn) error {
return func(conn socketio.Conn) error {
// Do some kind of logic in the middleware...
fmt.Println("Middleware!")
// Now we call the actual function
return next(conn)
}
}
然后可以根据需要使用它,例如:
io.OnEvent("/", "myEvent", myMiddleware(func(con socketio.Conn) error {
fmt.Println("Handler func!")
return nil
}))
当收到时,这将首先运行中间件(打印“中间件!”),然后运行包装函数(因为在中间件中调用)。myEventnext
TA贡献1854条经验 获得超8个赞
您可以使用此模块 https://github.com/fakundo/go-middleware
事件处理程序:
io.OnEvent("/", "some-event", requireAuth(func(s socketio.Conn) {
// some event handler code
}))
中间件:
var requireAuth = middleware.Create(func(s socketio.Conn, next func()) {
if authorized(s) {
next()
} else {
s.emit("error", AuthError)
}
})
- 2 回答
- 0 关注
- 109 浏览
添加回答
举报