Skip to content

An easy-to-use event-based networking library based on KCP and Smux for Go.

License

Notifications You must be signed in to change notification settings

zeozeozeo/jolta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jolta

Go Report Card License Documentation

This is an event-based networking library for Go, based on KCP and Smux.

Features

  • Secure: all of the data is encrypted by default, and there's no way to disable it.
  • Small latency: the KCP protocol is designed for small latencies.
  • Small: the entire library is ~650 lines of code.

Examples

(Server) Start a server

package main

import "github.com/zeozeozeo/jolta"

func main() {
    // server address, password, salt
    server := jolta.NewServer("127.0.0.1:7145", []byte("test password"), []byte("test salt"))

    // listen (this is blocking)
	if err := server.Listen(); err != nil {
		panic(err)
	}
}

(Client) Connect to a server

package main

import "github.com/zeozeozeo/jolta"

func main() {
    // server address, password and salt
    // of the server you want to connect to
    client := jolta.NewClient("127.0.0.1:7145", []byte("test password"), []byte("test salt"))

    // connect to the server (this is blocking)
    if err := client.Connect(); err != nil {
		panic(err)
	}
}

(Client) Send and recieve messages to/from other clients

func main() {
    // client := jolta.NewClient(...)

    client.OnConnect(func(client *jolta.Client) {
        // send a message to all connected
        // clients, the event name can be
        // any string
		client.SendAll("any event name", []byte("hello from client!"))

        // get all clients connected to
        // the server
        clients, err := client.GetClients()
        if err != nil || len(clients) == 0 {
            return
        }

        // send a message to some client
        // (clients are represented with
        // ID's, 1 being the client that
        // connected first)
        client.SendTo("any event name", clients[0], []byte("hi client!"))
	})

    // recieve messages from other clients
	client.On("any event name", func(client *jolta.Client, senderId uint32, data []byte) {
		// do anything you want...
        fmt.Printf("client %d says: %s\n", senderId, string(data))
	})

    // client.Connect()...
}

See more examples in internal/examples

Releases

No releases published

Packages

No packages published

Languages