• Mahmood Ali's avatar
    agent: add websocket handler for nomad exec · bfb4f0ca
    Mahmood Ali authored
    This adds a websocket endpoint for handling `nomad exec`.
    
    The endpoint is a websocket interface, as we require a bi-directional
    streaming (to handle both input and output), which is not very appropriate for
    plain HTTP 1.0. Using websocket makes implementing the web ui a bit simpler. I
    considered using golang http hijack capability to treat http request as a plain
    connection, but the web interface would be too complicated potentially.
    
    Furthermore, the API endpoint operates against the raw core nomad exec streaming
    datastructures, defined in protobuf, with json serializer.  Our APIs use json
    interfaces in general, and protobuf generates json friendly golang structs.
    Reusing the structs here simplify interface and reduce conversion overhead.
    bfb4f0ca