- sink := rtr.eventSource.NewSink()
- log := logger(ws.Request().Context())
- log.Info("connected")
-
- stats := handler.Handle(ws, sink.Channel())
-
- log.WithFields(logrus.Fields{
- "Elapsed": time.Now().Sub(t0).Seconds(),
- "Stats": stats,
- }).Info("disconnect")
- sink.Stop()
+ 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")