2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
這實(shí)際上取決于您想用這種中間件做什么。
您始終可以編寫一個(gè)“介于”另一個(gè)函數(shù)和實(shí)際處理程序之間的函數(shù),該函數(shù)可以按照您建議的方式使用:
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)
}
}
然后可以根據(jù)需要使用它,例如:
io.OnEvent("/", "myEvent", myMiddleware(func(con socketio.Conn) error {
fmt.Println("Handler func!")
return nil
}))
當(dāng)收到時(shí),這將首先運(yùn)行中間件(打印“中間件!”),然后運(yùn)行包裝函數(shù)(因?yàn)樵谥虚g件中調(diào)用)。myEventnext

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用此模塊 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 關(guān)注
- 141 瀏覽
添加回答
舉報(bào)