- log.Printf("%v accepted", ws.Request().RemoteAddr)
- sink := rtr.eventSource.NewSink()
- handler.Handle(ws, sink.Channel())
- sink.Stop()
+ t0 := time.Now()
+ logger := ctxlog.FromContext(ws.Request().Context())
+ atomic.AddInt64(&connected, 1)
+ gauge.Set(float64(atomic.LoadInt64(&connected)))
+
+ stats := rtr.handler.Handle(ws, logger, rtr.eventSource,
+ func(ws wsConn, sendq chan<- interface{}) (session, error) {
+ return newSession(ws, sendq, rtr.eventSource.DB(), rtr.newPermChecker(), rtr.client)
+ })
+
+ logger.WithFields(logrus.Fields{
+ "elapsed": time.Now().Sub(t0).Seconds(),
+ "stats": stats,
+ }).Info("client disconnected")