Categorygithub.com/NotCoffee418/websocketmanager
modulepackage
0.2.1
Repository: https://github.com/notcoffee418/websocketmanager.git
Documentation: pkg.go.dev

# README

WebSocket Manager

WebSocket Manager is a Go library that simplifies managing WebSocket connections. It offers functionalities like upgrading HTTP connections to WebSocket, managing clients, broadcasting messages, and more.

This library is an abstraction on top of the gorilla/websocket library.

Installation

Install the package using go get:

go get github.com/NotCoffee418/websocketmanager

Add the package to your code:

import "github.com/NotCoffee418/websocketmanager"

Usage

Here's how to use WebSocket Manager in your Go application.

Initialize Manager

Create a new instance of the Manager type using one of the following methods:

// Create a manager with default settings
wsManager := websocketmanager.NewDefaultManager()

// Create a manager with customized settings
wsManager := websocketmanager.NewBuilder().
              WithReadBufferSize(2048).
              WithWriteBufferSize(2048).
              WithClientCleanupDisabled().
              Build()

Upgrade HTTP Connection to WebSocket

Upgrade an incoming HTTP request to a WebSocket connection:

func ginHandler(c *gin.Context) {
	wsClient <- wsManager.UpgradeClient(c.Writer, c.Request)
	//...
}

This library is agnostic to the specific Go web framework used, as long as the framework is based on Go's standard net/http package.

Assign Groups

To categorize clients into groups, use the AssignGroups method:

wsManager.AssignGroups(*client.ConnId, 1, 2)

Register Observers

To observe messages from a specific client, register an observer function:

wsManager.RegisterClientObserver(*client.ConnId, func(wsClient *websocketmanager.Client, messageType int, message []byte) {
    // Handle incoming message
})

Send Messages

To send messages, you have the following options:

  • Broadcast a message to all clients

    wsManager.BroadcastMessage(messageType, message)
    
  • Send a message to a specific group of clients

    wsManager.SendMessageToGroup(groupID, messageType, message)
    
  • Send a message to a specific client

    wsManager.SendMessageToUser(clientUUID, messageType, message)
    

Message type definitions can be found in the gorilla/websocket library.

messageType := websocket.TextMessage

Manage Clients

You can manually unregister clients or retrieve specific clients by their UUID:

  • To unregister a client:

    wsManager.Unregister(clientUUID)
    
  • To get a specific client:

    client, err := wsManager.GetWebSocketClient(clientUUID)
    

Cleanup

By default, WebSocket Manager will automatically clean up inactive clients. You can disable this during the initialization step if needed.

Contributing

Contributions are welcome. Feel free to open a pull request or issue on GitHub.

License

This project is licensed under the MIT License.

For more information, please refer to the LICENSE file in the repository.

# Functions

No description provided by the author
NewDefaultManager Creates a new Manager with default values.

# Structs

Client contains information about a websocket user.
Manager is a websocket manager.
ManagerBuilder is a builder for the websocket manager.

# Type aliases

ClientObservableFunc is a function that will be called when a client sends a message.