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 關注
- 145 瀏覽
添加回答
舉報