Documentation ¶
Overview ¶
Note: with the exclusion of the package name the message protocol logic is a verbatim copy of iris/websocket/message.go
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientConnection ¶
type ClientConnection interface { // EmitMessage sends a native websocket message EmitMessage([]byte) error // Emit sends a message on a particular event Emit(string, interface{}) error // OnDisconnect registers a callback which fires when this connection is closed by an error or manual OnDisconnect(iwebsocket.DisconnectFunc) // OnMessage registers a callback which fires when native websocket message received OnMessage(iwebsocket.NativeMessageFunc) // On registers a callback to a particular event which fires when a message to this event received On(string, iwebsocket.MessageFunc) // Disconnect disconnects the client, close the underline websocket conn and removes it from the conn list // returns the error, if any, from the underline connection Disconnect() error }
ClientConnection defines proper subset of Connection interface which is satisfied by Client
type ConnectCallback ¶
type ConnectCallback func(cc ClientConnection)
type WSDialer ¶
type WSDialer struct { // NetDial specifies the dial function for creating TCP connections. If // NetDial is nil, net.Dial is used. NetDial func(network, addr string) (net.Conn, error) // Proxy specifies a function to return a proxy for a given // Request. If the function returns a non-nil error, the // request is aborted with the provided error. // If Proxy is nil or returns a nil *URL, no proxy is used. Proxy func(*http.Request) (*url.URL, error) // TLSClientConfig specifies the TLS configuration to use with tls.Client. // If nil, the default configuration is used. TLSClientConfig *tls.Config // HandshakeTimeout specifies the duration for the handshake to complete. HandshakeTimeout time.Duration // ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer // size is zero, then a useful default size is used. The I/O buffer sizes // do not limit the size of the messages that can be sent or received. ReadBufferSize, WriteBufferSize int // Subprotocols specifies the client's requested subprotocols. Subprotocols []string // EnableCompression specifies if the client should attempt to negotiate // per message compression (RFC 7692). Setting this value to true does not // guarantee that compression will be supported. Currently only "no context // takeover" modes are supported. EnableCompression bool // Jar specifies the cookie jar. // If Jar is nil, cookies are not sent in requests and ignored // in responses. Jar http.CookieJar // contains filtered or unexported fields }
WSDialer here is a wrapper around the gorilla.websocket.Dialer which returns a wsclient.Client instead of the gorilla Connection on Dial()
func (*WSDialer) Dial ¶
func (wsd *WSDialer) Dial(urlStr string, requestHeader http.Header, config iwebsocket.Config) (ClientConnection, *http.Response, error)
Dial initiates a connection to a remote Iris server websocket listener using the gorilla websocket Dialer and returns a Client connection which can be used to emit and handle messages
type WSHandler ¶
type WSHandler struct { // HandshakeTimeout specifies the duration for the handshake to complete. HandshakeTimeout time.Duration // ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer // size is zero, then buffers allocated by the HTTP server are used. The // I/O buffer sizes do not limit the size of the messages that can be sent // or received. ReadBufferSize, WriteBufferSize int // Subprotocols specifies the server's supported protocols in order of // preference. If this field is set, then the Upgrade method negotiates a // subprotocol by selecting the first match in this list with a protocol // requested by the client. Subprotocols []string // Error specifies the function for generating HTTP error responses. If Error // is nil, then http.Error is used to generate the HTTP response. Error func(w http.ResponseWriter, r *http.Request, status int, reason error) // CheckOrigin returns true if the request Origin header is acceptable. If // CheckOrigin is nil, the host in the Origin header must not be set or // must match the host of the request. CheckOrigin func(r *http.Request) bool // EnableCompression specify if the server should attempt to negotiate per // message compression (RFC 7692). Setting this value to true does not // guarantee that compression will be supported. Currently only "no context // takeover" modes are supported. EnableCompression bool Config iwebsocket.Config // contains filtered or unexported fields }
WSHandler is mostly a wrapper around Gorilla's websocket.Upgrader component Generally any framework can use this handler to upgrade and manage a websocket connection
func (*WSHandler) HandleRequest ¶
func (wsh *WSHandler) HandleRequest(w http.ResponseWriter, r *http.Request)
func (*WSHandler) OnConnect ¶
func (wsh *WSHandler) OnConnect(cb ConnectCallback)
OnConnect registers a callback function which is called after an incoming HTTP(S) request is upgraded to enable Websocket traffic and before message traffic handling (send/receive) starts. The