package main import ( "encoding/json" "fmt" "log" "github.com/deranjer/gvc/messages" "github.com/firstrow/tcp_server" ) var version = "0.1" //This is a generic error message so we make it 'global' var errorMsg = messages.Command{ CmdID: messages.ERROR, Body: []byte("Unrecognized Message"), } func main() { errMsgJSON, _ := json.Marshal(errorMsg) //creating a []byte to easily send error message server := tcp_server.New("localhost:9999") server.OnNewClient(func(c *tcp_server.Client) { // new client connected fmt.Println("New client connected....") newMessage := messages.Command{ CmdID: messages.CONNECTED, Body: []byte("Connected"), } jsonMessage, err := json.Marshal(newMessage) if err != nil { log.Fatalf("error creating new marshaller: %s", err) } c.Send(jsonMessage) }) server.OnNewMessage(func(c *tcp_server.Client, message []byte) { var newMessage messages.Command //messageBytes := []byte(message) err := json.Unmarshal(message, &newMessage) if err != nil { c.Send(errMsgJSON) fmt.Println("error reading message, closing connection to client") c.Close() } fmt.Println("new Message from client: ", message) switch newMessage.CmdID { case messages.INFO: fmt.Println("Sending server info to client") detailsMessage := fmt.Sprintf("Server Details are as follows: Version: %s \n", version) c.Send(detailsMessage) default: fmt.Println("unrecognized message! ", message) } }) server.OnClientConnectionClosed(func(c *tcp_server.Client, err error) { // connection with client lost fmt.Println("Connection with client closed") }) server.Listen() }