diff --git a/_examples/websocket/README.md b/_examples/websocket/README.md index 35ca1cbd..c7d9c68f 100644 --- a/_examples/websocket/README.md +++ b/_examples/websocket/README.md @@ -45,8 +45,11 @@ type Config struct { // The request is an argument which you can use to generate the ID (from headers for example). // If empty then the ID is generated by DefaultIDGenerator: randomString(64) IDGenerator func(ctx context.Context) string - - Error func(w http.ResponseWriter, r *http.Request, status int, reason error) + // Error is the function that will be fired if any client couldn't upgrade the HTTP connection + // to a websocket connection, a handshake error. + Error func(w http.ResponseWriter, r *http.Request, status int, reason error) + // CheckOrigin a function that is called right before the handshake, + // if returns false then that client is not allowed to connect with the websocket server. CheckOrigin func(r *http.Request) bool // HandshakeTimeout specifies the duration for the handshake to complete. HandshakeTimeout time.Duration diff --git a/_examples/websocket/chat/websockets.html b/_examples/websocket/chat/websockets.html index bd594cc3..3604bfd0 100644 --- a/_examples/websocket/chat/websockets.html +++ b/_examples/websocket/chat/websockets.html @@ -1,39 +1,45 @@ + + + + +
+ + \ No newline at end of file diff --git a/websocket/config.go b/websocket/config.go index a356eb50..4280c8e9 100644 --- a/websocket/config.go +++ b/websocket/config.go @@ -41,8 +41,11 @@ type Config struct { // The request is an argument which you can use to generate the ID (from headers for example). // If empty then the ID is generated by DefaultIDGenerator: randomString(64) IDGenerator func(ctx context.Context) string - - Error func(w http.ResponseWriter, r *http.Request, status int, reason error) + // Error is the function that will be fired if any client couldn't upgrade the HTTP connection + // to a websocket connection, a handshake error. + Error func(w http.ResponseWriter, r *http.Request, status int, reason error) + // CheckOrigin a function that is called right before the handshake, + // if returns false then that client is not allowed to connect with the websocket server. CheckOrigin func(r *http.Request) bool // HandshakeTimeout specifies the duration for the handshake to complete. HandshakeTimeout time.Duration @@ -57,7 +60,7 @@ type Config struct { // PongTimeout allowed to read the next pong message from the connection. // Default value is 60 * time.Second PongTimeout time.Duration - // PingPeriod send ping messages to the connection with this period. Must be less than PongTimeout. + // PingPeriod send ping messages to the connection within this period. Must be less than PongTimeout. // Default value is 60 *time.Second PingPeriod time.Duration // MaxMessageSize max message size allowed from connection. @@ -65,18 +68,20 @@ type Config struct { MaxMessageSize int64 // BinaryMessages set it to true in order to denotes binary data messages instead of utf-8 text // compatible if you wanna use the Connection's EmitMessage to send a custom binary data to the client, like a native server-client communication. - // defaults to false + // Default value is false BinaryMessages bool - // ReadBufferSize is the buffer size for the underline reader + // ReadBufferSize is the buffer size for the connection reader. // Default value is 4096 ReadBufferSize int - // WriteBufferSize is the buffer size for the underline writer + // WriteBufferSize is the buffer size for the connection writer. // Default value is 4096 WriteBufferSize int // 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. + // + // Defauls to false and it should be remain as it is, unless special requirements. EnableCompression bool // Subprotocols specifies the server's supported protocols in order of diff --git a/websocket/connection.go b/websocket/connection.go index 2d6a93da..ce887e95 100644 --- a/websocket/connection.go +++ b/websocket/connection.go @@ -67,8 +67,8 @@ func (r *ConnectionValues) Reset() { *r = (*r)[:0] } -// UnderlineConnection is used for compatible with fasthttp and net/http underline websocket libraries -// we only need ~8 funcs from websocket.Conn so: +// UnderlineConnection is the underline connection, nothing to think about, +// it's used internally mostly but can be used for extreme cases with other libraries. type UnderlineConnection interface { // SetWriteDeadline sets the write deadline on the underlying network // connection. After a write has timed out, the websocket state is corrupt and @@ -118,13 +118,13 @@ type UnderlineConnection interface { // ------------------------------------------------------------------------------------- type ( - // DisconnectFunc is the callback which fires when a client/connection closed + // DisconnectFunc is the callback which is fired when a client/connection closed DisconnectFunc func() - // LeaveRoomFunc is the callback which fires when a client/connection leaves from any room. + // LeaveRoomFunc is the callback which is fired when a client/connection leaves from any room. // This is called automatically when client/connection disconnected // (because websocket server automatically leaves from all joined rooms) LeaveRoomFunc func(roomName string) - // ErrorFunc is the callback which fires when an error happens + // ErrorFunc is the callback which fires whenever an error occurs ErrorFunc (func(string)) // NativeMessageFunc is the callback for native websocket messages, receives one []byte parameter which is the raw client's message NativeMessageFunc func([]byte) @@ -155,26 +155,26 @@ type ( // then you use it to receive user information, for example: from headers Context() context.Context - // OnDisconnect registers a callback which fires when this connection is closed by an error or manual + // OnDisconnect registers a callback which is fired when this connection is closed by an error or manual OnDisconnect(DisconnectFunc) // OnError registers a callback which fires when this connection occurs an error OnError(ErrorFunc) // OnPing registers a callback which fires on each ping OnPing(PingFunc) - // FireStatusCode can be used to send a custom error message to the connection + // FireOnError can be used to send a custom error message to the connection // - // It does nothing more than firing the OnError listeners. It doesn't sends anything to the client. + // It does nothing more than firing the OnError listeners. It doesn't send anything to the client. FireOnError(errorMessage string) - // To defines where server should send a message - // returns an emitter to send messages + // To defines on what "room" (see Join) the server should send a message + // returns an Emmiter(`EmitMessage` & `Emit`) to send messages. To(string) Emitter // OnMessage registers a callback which fires when native websocket message received OnMessage(NativeMessageFunc) - // On registers a callback to a particular event which fires when a message to this event received + // On registers a callback to a particular event which is fired when a message to this event is received On(string, MessageFunc) - // Join join a connection to a room, it doesn't check if connection is already there, so care + // Join registers this connection to a room, if it doesn't exist then it creates a new. One room can have one or more connections. One connection can be joined to many rooms. All connections are joined to a room specified by their `ID` automatically. Join(string) - // Leave removes a connection from a room + // Leave removes this connection entry from a room // Returns true if the connection has actually left from the particular room. Leave(string) bool // OnLeave registers a callback which fires when this connection left from any joined room.