开发钩子插件

钩子插件就是在服务器的关键逻辑处插入的函数调用,方便扩展服务器的功能,比如对连接进行验证,或者触发一些特殊的发布者。目前提供的钩子包括

  • 当发布者开始发布时 OnPublishHooks.AddHook(onPublish)例如:
  1. func onPublish(r *Room) {
  2. for _, v := range r.Subscribers {
  3. if err := CheckSign(v.Sign); err != nil {
  4. v.Cancel()
  5. }
  6. }
  7. }

此时可以访问房间里面的订阅者,对其进行验证。

  • 当有订阅者订阅了某个流时,OnSubscribeHooks.AddHook(onSubscribe)例如:
  1. func onSubscribe(s *OutputStream) {
  2. if s.Publisher == nil {
  3. go PullUpStream(s.StreamPath)
  4. }
  5. }

拉取源服务器的流