X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0f1fca27f3b4b40ff8f6be729e12f2feeba05f8f..6c40c1c5b000b2eb0967df0f7ebaf613393501bc:/services/ws/handler.go diff --git a/services/ws/handler.go b/services/ws/handler.go index 8d8edcac34..72291900fa 100644 --- a/services/ws/handler.go +++ b/services/ws/handler.go @@ -31,6 +31,7 @@ func (h *handler) Handle(ws wsConn, eventSource eventSource, newSession func(wsC h.setupOnce.Do(h.setup) ctx, cancel := context.WithCancel(ws.Request().Context()) + defer cancel() log := logger(ctx) incoming := eventSource.NewSink() @@ -52,6 +53,8 @@ func (h *handler) Handle(ws wsConn, eventSource eventSource, newSession func(wsC return } + // Receive websocket frames from the client and pass them to + // sess.Receive(). go func() { buf := make([]byte, 2<<20) for { @@ -83,6 +86,9 @@ func (h *handler) Handle(ws wsConn, eventSource eventSource, newSession func(wsC } }() + // Take items from the outgoing queue, serialize them using + // sess.EventMessage() as needed, and send them to the client + // as websocket frames. go func() { for { var ok bool @@ -192,7 +198,7 @@ func (h *handler) Handle(ws wsConn, eventSource eventSource, newSession func(wsC return } -func (h *handler) Status() interface{} { +func (h *handler) DebugStatus() interface{} { h.mtx.Lock() defer h.mtx.Unlock()