websocket_http

package
v0.35.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2024 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const ConfigID = ControllerID

ConfigID is the string used to identify this config object.

View Source
const ControllerID = "bifrost/websocket/http"

ControllerID is the WebSocket HTTP handler controller ID.

Variables

View Source
var Version = semver.MustParse("0.0.1")

Version is the version of the implementation.

Functions

This section is empty.

Types

type Config

type Config struct {

	// TransportPeerID sets the peer ID to attach the transport to.
	// If unset, attaches to any running peer with a private key.
	TransportPeerId string `protobuf:"bytes,1,opt,name=transport_peer_id,json=transportPeerId,proto3" json:"transportPeerId,omitempty"`
	// HttpPatterns is the list of patterns to listen on.
	// Example: ["GET example.com/my/ws", "GET /other/path"]
	HttpPatterns []string `protobuf:"bytes,2,rep,name=http_patterns,json=httpPatterns,proto3" json:"httpPatterns,omitempty"`
	// PeerHttpPatterns is the list of patterns to serve the peer ID on.
	// Example: ["GET example.com/my/ws/peer-id", "GET /other/path/peer-id"]
	PeerHttpPatterns []string `protobuf:"bytes,3,rep,name=peer_http_patterns,json=peerHttpPatterns,proto3" json:"peerHttpPatterns,omitempty"`
	// Quic contains the quic protocol options.
	//
	// The WebSocket transport always disables FEC and several other UDP-centric
	// features which are unnecessary due to the "reliable" nature of WebSockets.
	Quic *quic.Opts `protobuf:"bytes,4,opt,name=quic,proto3" json:"quic,omitempty"`
	// Dialers maps peer IDs to dialers.
	Dialers map[string]*dialer.DialerOpts `` /* 155-byte string literal not displayed */
	// contains filtered or unexported fields
}

Config is the configuration for the Websocket HTTP handler transport.

Listen for incoming connections with bifrost/http/listener This controller resolves LookupHTTPHandler directives filtering by ServeMux patterns. Example: ["GET example.com/my/ws", "GET /other/path"]

func (*Config) CloneMessageVT

func (m *Config) CloneMessageVT() protobuf_go_lite.CloneMessage

func (*Config) CloneVT

func (m *Config) CloneVT() *Config

func (*Config) EqualMessageVT

func (this *Config) EqualMessageVT(thatMsg any) bool

func (*Config) EqualVT

func (this *Config) EqualVT(that *Config) bool

func (*Config) EqualsConfig

func (c *Config) EqualsConfig(c2 config.Config) bool

EqualsConfig checks if the other config is equal.

func (*Config) GetConfigID

func (c *Config) GetConfigID() string

GetConfigID returns the unique string for this configuration type. This string is stored with the encoded config.

func (*Config) GetDebugVals

func (c *Config) GetDebugVals() config.DebugValues

GetDebugVals returns the directive arguments as key/value pairs. This should be something like param1="test", param2="test". This is not necessarily unique, and is primarily intended for display.

func (*Config) GetDialers

func (x *Config) GetDialers() map[string]*dialer.DialerOpts

func (*Config) GetHttpPatterns

func (x *Config) GetHttpPatterns() []string

func (*Config) GetPeerHttpPatterns

func (x *Config) GetPeerHttpPatterns() []string

func (*Config) GetQuic

func (x *Config) GetQuic() *quic.Opts

func (*Config) GetTransportPeerId

func (x *Config) GetTransportPeerId() string

func (*Config) MarshalJSON

func (x *Config) MarshalJSON() ([]byte, error)

MarshalJSON marshals the Config to JSON.

func (*Config) MarshalProtoJSON

func (x *Config) MarshalProtoJSON(s *json.MarshalState)

MarshalProtoJSON marshals the Config message to JSON.

func (*Config) MarshalProtoText

func (x *Config) MarshalProtoText() string

func (*Config) MarshalToSizedBufferVT

func (m *Config) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Config) MarshalToVT

func (m *Config) MarshalToVT(dAtA []byte) (int, error)

func (*Config) MarshalVT

func (m *Config) MarshalVT() (dAtA []byte, err error)

func (*Config) ParseTransportPeerID

func (c *Config) ParseTransportPeerID() (peer.ID, error)

ParseTransportPeerID parses the node peer ID if it is not empty.

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) Reset

func (x *Config) Reset()

func (*Config) SetTransportPeerId

func (c *Config) SetTransportPeerId(peerID string)

SetTransportPeerId sets the node peer ID field.

func (*Config) SizeVT

func (m *Config) SizeVT() (n int)

func (*Config) String

func (x *Config) String() string

func (*Config) UnmarshalJSON

func (x *Config) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals the Config from JSON.

func (*Config) UnmarshalProtoJSON

func (x *Config) UnmarshalProtoJSON(s *json.UnmarshalState)

UnmarshalProtoJSON unmarshals the Config message from JSON.

func (*Config) UnmarshalVT

func (m *Config) UnmarshalVT(dAtA []byte) error

func (*Config) Validate

func (c *Config) Validate() error

Validate validates the configuration. This is a cursory validation to see if the values "look correct."

type Config_DialersEntry

type Config_DialersEntry struct {
	Key   string             `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value *dialer.DialerOpts `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

func (*Config_DialersEntry) GetKey

func (x *Config_DialersEntry) GetKey() string

func (*Config_DialersEntry) GetValue

func (x *Config_DialersEntry) GetValue() *dialer.DialerOpts

func (*Config_DialersEntry) MarshalJSON

func (x *Config_DialersEntry) MarshalJSON() ([]byte, error)

MarshalJSON marshals the Config_DialersEntry to JSON.

func (*Config_DialersEntry) MarshalProtoJSON

func (x *Config_DialersEntry) MarshalProtoJSON(s *json.MarshalState)

MarshalProtoJSON marshals the Config_DialersEntry message to JSON.

func (*Config_DialersEntry) MarshalProtoText

func (x *Config_DialersEntry) MarshalProtoText() string

func (*Config_DialersEntry) ProtoMessage

func (*Config_DialersEntry) ProtoMessage()

func (*Config_DialersEntry) Reset

func (x *Config_DialersEntry) Reset()

func (*Config_DialersEntry) String

func (x *Config_DialersEntry) String() string

func (*Config_DialersEntry) UnmarshalJSON

func (x *Config_DialersEntry) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals the Config_DialersEntry from JSON.

func (*Config_DialersEntry) UnmarshalProtoJSON

func (x *Config_DialersEntry) UnmarshalProtoJSON(s *json.UnmarshalState)

UnmarshalProtoJSON unmarshals the Config_DialersEntry message from JSON.

type Factory

type Factory struct {
	// contains filtered or unexported fields
}

Factory constructs a WebSocket transport.

func NewFactory

func NewFactory(bus bus.Bus) *Factory

NewFactory builds a transport factory.

func (*Factory) Construct

func (t *Factory) Construct(
	ctx context.Context,
	conf config.Config,
	opts controller.ConstructOpts,
) (controller.Controller, error)

Construct constructs the associated controller given configuration.

func (*Factory) ConstructConfig

func (t *Factory) ConstructConfig() config.Config

ConstructConfig constructs an instance of the controller configuration.

func (*Factory) GetConfigID

func (t *Factory) GetConfigID() string

GetConfigID returns the configuration ID for the controller.

func (*Factory) GetControllerID

func (t *Factory) GetControllerID() string

GetControllerID returns the unique ID for the controller.

func (*Factory) GetVersion

func (t *Factory) GetVersion() semver.Version

GetVersion returns the version of this controller.

type WebSocketHttp

type WebSocketHttp struct {
	// Controller is the transport controller
	*transport_controller.Controller
	// contains filtered or unexported fields
}

NewWebSocketHttp builds a new WebSocket http handler controller.

func NewWebSocketHttp

func NewWebSocketHttp(le *logrus.Entry, b bus.Bus, conf *Config) (*WebSocketHttp, error)

NewWebSocketHttp builds a new WebSocket http handler controller.

func (*WebSocketHttp) HandleDirective

func (t *WebSocketHttp) HandleDirective(ctx context.Context, di directive.Instance) ([]directive.Resolver, error)

HandleDirective asks if the handler can resolve the directive. If it can, it returns resolver(s). If not, returns nil. It is safe to add a reference to the directive during this call. The passed context is canceled when the directive instance expires. NOTE: the passed context is not canceled when the handler is removed.

func (*WebSocketHttp) ResolveLookupHTTPHandler

func (t *WebSocketHttp) ResolveLookupHTTPHandler(ctx context.Context, dir bifrost_http.LookupHTTPHandler) ([]directive.Resolver, error)

ResolveLookupHTTPHandler resolves the LookupHTTPHandler directive conditionally. Returns nil, nil if no handlers matched.

func (*WebSocketHttp) ServePeerHTTP

func (t *WebSocketHttp) ServePeerHTTP(rw http.ResponseWriter, req *http.Request)

ServePeerHTTP serves the peer ID as a string on the HTTP response.

func (*WebSocketHttp) ServeWebSocketHTTP

func (t *WebSocketHttp) ServeWebSocketHTTP(rw http.ResponseWriter, req *http.Request)

ServeWebSocketHTTP serves the WebSocket on the HTTP response.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL