X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d63601c63f651ab9fe4fefb5a7e8d76bf0495da3..57170c25230cf56c99c5b2cbc795f4599cbda87f:/services/ws/handler.go diff --git a/services/ws/handler.go b/services/ws/handler.go index ca9231c986..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