Documentation ¶
Index ¶
- Constants
- Variables
- func IsExpectedWSCloseError(err error) bool
- type ControlHandler
- type ControlHandlerFunc
- type Details
- type JSONWebsocketCodec
- func (j *JSONWebsocketCodec) Close() error
- func (j *JSONWebsocketCodec) ReadRequestBody(v interface{}) error
- func (j *JSONWebsocketCodec) ReadRequestHeader(r *rpc.Request) error
- func (j *JSONWebsocketCodec) ReadResponseBody(v interface{}) error
- func (j *JSONWebsocketCodec) ReadResponseHeader(r *rpc.Response) error
- func (j *JSONWebsocketCodec) WaitForReadError() error
- func (j *JSONWebsocketCodec) WriteRequest(r *rpc.Request, v interface{}) error
- func (j *JSONWebsocketCodec) WriteResponse(r *rpc.Response, v interface{}) error
- type Message
- type Pipe
- type Request
- type Response
- type WSDialer
- type Websocket
Constants ¶
const ( // AppPort is the default port that the app will use for its HTTP server. // The app publishes the API and user interface, and receives reports from // probes, on this port. AppPort = 4040 // ScopeProbeIDHeader is the header we use to carry the probe's unique ID. The // ID is currently set to the a random string on probe startup. ScopeProbeIDHeader = "X-Scope-Probe-ID" )
Variables ¶
var ErrInvalidMessage = fmt.Errorf("Invalid Message")
ErrInvalidMessage is the error returned when the on-wire message is unexpected.
Functions ¶
func IsExpectedWSCloseError ¶ added in v0.13.0
IsExpectedWSCloseError returns boolean indicating whether the error is a clean disconnection.
Types ¶
type ControlHandler ¶
ControlHandler is interface used in the app and the probe to represent a control RPC.
type ControlHandlerFunc ¶
ControlHandlerFunc is a adapter (ala golang's http RequestHandlerFunc) for ControlHandler
type Details ¶
type Details struct { ID string `json:"id"` Version string `json:"version"` Hostname string `json:"hostname"` }
Details are some generic details that can be fetched from /api
type JSONWebsocketCodec ¶
JSONWebsocketCodec is golang rpc compatible Server and Client Codec that transmits and receives RPC messages over a websocker, as JSON.
func NewJSONWebsocketCodec ¶
func NewJSONWebsocketCodec(conn Websocket) *JSONWebsocketCodec
NewJSONWebsocketCodec makes a new JSONWebsocketCodec
func (*JSONWebsocketCodec) Close ¶
func (j *JSONWebsocketCodec) Close() error
Close implements rpc.ClientCodec and rpc.ServerCodec
func (*JSONWebsocketCodec) ReadRequestBody ¶
func (j *JSONWebsocketCodec) ReadRequestBody(v interface{}) error
ReadRequestBody implements rpc.ServerCodec
func (*JSONWebsocketCodec) ReadRequestHeader ¶
func (j *JSONWebsocketCodec) ReadRequestHeader(r *rpc.Request) error
ReadRequestHeader implements rpc.ServerCodec
func (*JSONWebsocketCodec) ReadResponseBody ¶
func (j *JSONWebsocketCodec) ReadResponseBody(v interface{}) error
ReadResponseBody implements rpc.ClientCodec
func (*JSONWebsocketCodec) ReadResponseHeader ¶
func (j *JSONWebsocketCodec) ReadResponseHeader(r *rpc.Response) error
ReadResponseHeader implements rpc.ClientCodec
func (*JSONWebsocketCodec) WaitForReadError ¶
func (j *JSONWebsocketCodec) WaitForReadError() error
WaitForReadError blocks until any read on this codec returns an error. This is useful to know when the server has disconnected from the client.
func (*JSONWebsocketCodec) WriteRequest ¶
func (j *JSONWebsocketCodec) WriteRequest(r *rpc.Request, v interface{}) error
WriteRequest implements rpc.ClientCodec
func (*JSONWebsocketCodec) WriteResponse ¶
func (j *JSONWebsocketCodec) WriteResponse(r *rpc.Response, v interface{}) error
WriteResponse implements rpc.ServerCodec
type Pipe ¶
type Pipe interface { Ends() (io.ReadWriter, io.ReadWriter) CopyToWebsocket(io.ReadWriter, Websocket) error Close() error Closed() bool OnClose(func()) }
Pipe is a bi-directional channel from someone thing in the probe to the UI.
type Response ¶
type Response struct { Value interface{} `json:"value,omitempty"` Error string `json:"error,omitempty"` Pipe string `json:"pipe,omitempty"` RawTTY bool `json:"raw_tty,omitempty"` }
Response is the Probe -> App -> UI message type for the control RPCs.
func ResponseError ¶
ResponseError creates a new Response with the given error.
func ResponseErrorf ¶
ResponseErrorf creates a new Response with the given formatted error string.
type WSDialer ¶ added in v0.13.0
type WSDialer interface {
Dial(urlStr string, requestHeader http.Header) (*websocket.Conn, *http.Response, error)
}
WSDialer can dial a new websocket
type Websocket ¶ added in v0.13.0
type Websocket interface { ReadMessage() (messageType int, p []byte, err error) WriteMessage(messageType int, data []byte) error ReadJSON(v interface{}) error WriteJSON(v interface{}) error Close() error }
Websocket exposes the bits of *websocket.Conn we actually use.
func DialWS ¶ added in v0.13.0
func DialWS(d WSDialer, urlStr string, requestHeader http.Header) (Websocket, *http.Response, error)
DialWS creates a new client connection. Use requestHeader to specify the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie). Use the response.Header to get the selected subprotocol (Sec-WebSocket-Protocol) and cookies (Set-Cookie).