WebSocket: allow configuring idle timeout and reconnects. (#3277)

* WebSocket: allow configuring idle timeout and reconnects.

This also resolves a TODO in TcpProxy by always passing it a
configuration, even in the WebSocket case.

Signed-off-by: Greg Greenway <ggreenway@apple.com>

Mirrored from https://github.com/envoyproxy/envoy @ c755c0393d8d6fbb16a00c7f2b97b8d0d5478c03
pull/620/head
data-plane-api(CircleCI) 7 years ago
parent fcd3ca7b7f
commit 8ee713f19a
  1. 41
      envoy/api/v2/route/route.proto

@ -305,6 +305,7 @@ message CorsPolicy {
google.protobuf.BoolValue enabled = 7; google.protobuf.BoolValue enabled = 7;
} }
// [#comment:next free field: 23]
message RouteAction { message RouteAction {
oneof cluster_specifier { oneof cluster_specifier {
option (validate.required) = true; option (validate.required) = true;
@ -553,24 +554,48 @@ message RouteAction {
// backend). // backend).
repeated HashPolicy hash_policy = 15; repeated HashPolicy hash_policy = 15;
// Indicates that a HTTP/1.1 client connection to this particular route // Indicates that a HTTP/1.1 client connection to this particular route is allowed to
// should be allowed (and expected) to upgrade to a WebSocket connection. The // upgrade to a WebSocket connection. The default is false.
// default is false.
// //
// .. attention:: // .. attention::
// //
// If set to true, Envoy will expect the first request matching this route to // If a connection is upgraded to a WebSocket connection, Envoy will set up plain TCP
// contain WebSocket upgrade headers. If the headers are not present, the
// connection will be rejected. If set to true, Envoy will setup plain TCP
// proxying between the client and the upstream server. Hence, an upstream // proxying between the client and the upstream server. Hence, an upstream
// server that rejects the WebSocket upgrade request is also responsible for // server that rejects the WebSocket upgrade request is also responsible for
// closing the associated connection. Until then, Envoy will continue to // closing the associated connection. Until then, Envoy will continue to
// proxy data from the client to the upstream server. // proxy data from the client to the upstream server.
// //
// Redirects, timeouts and retries are not supported on routes where websocket upgrades are // Redirects are not supported on routes where WebSocket upgrades are allowed.
// allowed.
google.protobuf.BoolValue use_websocket = 16; google.protobuf.BoolValue use_websocket = 16;
message WebSocketProxyConfig {
// See :ref:`stat_prefix <envoy_api_field_config.filter.network.tcp_proxy.v2.TcpProxy.stat_prefix>`.
// If the parameter is not specified, the default value of "websocket" is used.
//
// WebSocket connections support the :ref:`downstream statistics
// <config_network_filters_tcp_proxy_stats>` for TCP proxy, except for the following, which are reported
// in the :ref:`HTTP Connection Manager statistics <config_http_conn_man_stats>`:
// - downstream_cx_tx_bytes_total
// - downstream_cx_tx_bytes_buffered
// - downstream_cx_rx_bytes_total
// - downstream_cx_rx_bytes_buffered
string stat_prefix = 1;
// See :ref:`idle_timeout <envoy_api_field_config.filter.network.tcp_proxy.v2.TcpProxy.idle_timeout>`.
// This timeout is only in effect after the WebSocket upgrade request is received by Envoy. It does
// not cover the initial part of the HTTP request.
google.protobuf.Duration idle_timeout = 2
[(validate.rules).duration.gt = {}, (gogoproto.stdduration) = true];
// See :ref:`max_connect_attempts
// <envoy_api_field_config.filter.network.tcp_proxy.v2.TcpProxy.max_connect_attempts>`.
google.protobuf.UInt32Value max_connect_attempts = 3 [(validate.rules).uint32.gte = 1];
}
// Proxy configuration used for WebSocket connections. If unset, the default values as specified
// in :ref:`TcpProxy <envoy_api_msg_config.filter.network.tcp_proxy.v2.TcpProxy>` are used.
WebSocketProxyConfig websocket_config = 22;
// Indicates that the route has a CORS policy. // Indicates that the route has a CORS policy.
CorsPolicy cors = 17; CorsPolicy cors = 17;

Loading…
Cancel
Save