A Go TCP server (and client) implementation, optimised for low latency and pipelined throughput.
Server:
// define a handler
echoHandler := quasizero.HandlerFunc(func(req *quasizero.Request) (*quasizero.Response, error) {
return &quasizero.Response{Payload: req.Payload}, nil
})
// init a server
srv := quasizero.NewServer(map[int32]quasizero.Handler{
1: echoHandler,
}, nil)
// listen and serve
lis, err := net.Listen("tcp", ":11111")
if err != nil {
// handle error ...
}
defer lis.Close()
if err := srv.Serve(lis); err != nil {
// handle error ...
}
Client:
client, err := quasizero.NewClient(context.TODO(), "10.0.0.1:11111", nil)
if err != nil {
// handle error ...
}
defer client.Close()
// send an echo request
res, err := client.Call(&quasizero.Request{Code: 1, Payload: []byte("hello")})
if err != nil {
// handle error ...
}
fmt.Printf("server responded to ECHO with %q\n", res.Payload)
Please see the API documentation for package and API descriptions and examples.