Add a websockets server for browser clients' streaming requests
Context
#362 (closed) describes a REST API to allow browser-based clients to communicate with BuildGrid. That solves unary -> unary requests, which covers most of the requests that a browser will need to make, and can also handle things like streamed objects from CAS if need be. However, it doesn't solve the live streaming case presented by LogStream's use of the ByteStream API.
Proposed Solution
We can solve this by also having a websockets server, which will allow browsers to connect and consume a stream of data that the server can itself consume from BuildGrid using the existing APIs.
This solution can also likely be reused to provide a good way to access metrics directly from a browser-based client.
Acceptance Criteria
This is done when we have a websockets endpoint that browser-based clients can use to make ByteStream-like requests, particularly for LogStream resources.
Consider whether the following are required, and complete if so:
-
Unit tests -
Metrics -
Documentation update(s)