backbone

command module
v0.0.0-...-1c25654 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2023 License: MIT Imports: 4 Imported by: 0

README

Backbone

A Golang library for server client communication, uses gRPC under the hood.

Documentation

Documentation.

Features:

  • Dynamically add/change RPC methods (SetCommandHandler)
  • User defined authentication and authorization (using OnConnect event)
  • Detect and handle disconnects (OnDisconnect event)
  • Transmitts and receives strings/serialized data only.
  • Uses bidirectional gRPC stream under the hood.

Example usage:

Server:
func main() {
    // Instantiate the server
    s := server.New("localhost:1234")

    // Define event handlers
    eventChan := make(chan string, 5)
    s.SetOnConnect(func(s *server.Server, clientId string) {
        eventChan <- "a client disconnected " + clientId
    })
    s.SetOnDisconnect(func(s *server.Server, clientId string) {
        eventChan <- "a client disconnected " + clientId
    })
    
    // Define command handlers
    s.SetCommandHandler("client id 123", "command_1", func(s *server.Server, clientId string, arg string) {
        eventChan <- "command received: " + clientId + " -- " + arg
        // handle the command..
        // ..
        // Can respond to client:
        s.Send(clientId, "response_command_known_at_client", "cmdArg")
    }
    
    // Start server
    go s.Start()

    for in := range eventChan {
        log.Println("server received: ", in)
    }
}
Client:
func main() {
    // Instantiate client
    c := client.New("client id 123", ":1234")
    // Set event handlers
    c.SetOnConnect(func(c *client.Client) { log.Println("connected!") })
    c.SetOnDisconnect(func(c *client.Client) { log.Println("disconnected!") })
    // Set command handlers
    c.SetCommandHandler("response", func(c *client.Client, arg string) {
        log.Println("received command from server , ", arg)
        // handle command
        // ...
        // Can respond to server
        c.Send("command_1", "arguments")
    })
    // connect to server
    c.Start()
    c.Send("test_command", "client is sending this command")
    <-time.After(time.Second * 5)
}

License

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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