为了账号安全,请及时绑定邮箱和手机立即绑定

高朗 socket.io 中间件

高朗 socket.io 中间件

Go
偶然的你 2022-08-24 10:48:03
是否有用于事件处理程序的中间件的实现?socket.iohttps://github.com/googollee/go-socket.io例如io.OnEvent("/", "myEvent", myMiddleware(func(con socketio.Conn) {  /* my code */}))
查看完整描述

2 回答

?
慕的地8271018

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


查看完整回答
反对 回复 2022-08-24
?
哔哔one

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)

  }

})


查看完整回答
反对 回复 2022-08-24
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信