package main import ( "flag" "log" "net" "strings" "go.rctt.net/solec/client" "go.rctt.net/solec/core" "go.rctt.net/solec/prompt" ) var ( serverAddr string user string conn net.Conn c *client.Client ) type Handler struct{} func (h *Handler) HandleMessage(msg core.Message) { log.Println("received message", msg.Source, "->", msg.Target, msg.Content) } func (h *Handler) HandleError(err error) { log.Println("client error:", err) } func main() { prompt.Commands["send"] = sendMessage prompt.Commands["join"] = join prompt.Commands["leave"] = leave flag.StringVar(&serverAddr, "a", "localhost:9999", "Server address:port") flag.StringVar(&user, "u", "user", "username") flag.Parse() log.Println("connecting to " + serverAddr + " as " + user) c = client.NewClient(&Handler{}, serverAddr, user, "valid") go prompt.Read() if err := c.Connect(); err != nil { log.Fatal(err) return } } func sendMessage(args []string) { err := c.SendMessage(args[0], strings.Join(args[1:], " ")) if err != nil { log.Println("cannot send message:", err) } } func join(args []string) { err := c.Join(args[0]) if err != nil { log.Println("cannot join channel:", err) } } func leave(args []string) { err := c.Leave(args[0]) if err != nil { log.Println("cannot leave channel:", err) } }