ggogio is a lightweight tcp server framework ... world like to be. It aims for simple use and lightness, maybe.
- Create a sample chatting client.
type SampleClient struct {
server *ggogio.Server
session *ggogio.Session
}
func (s *SampleClient) Init(server *ggogio.Server, session *ggogio.Session) error {
s.server = server
s.session = session
sessions := s.server.Query(func(session *ggogio.Session) bool {
return s.session != session
})
for _, session := range sessions {
session.Write([]byte(fmt.Sprintf("%s joined. \n", s.session.Addr)))
}
return nil
}
func (s *SampleClient) OnLoop() {
data := s.session.Read()
sessions := s.server.Query(func(session *ggogio.Session) bool {
return s.session != session
})
for _, session := range sessions {
session.Write(data)
}
}
func (s *SampleClient) Close() {
sessions := s.server.Query(func(session *ggogio.Session) bool {
return s.session != session
})
for _, session := range sessions {
session.Write([]byte(fmt.Sprintf("%s left. \n", s.session.Addr)))
}
}
- Create SampleClient factory.
type SampleFactory struct {
}
func (s SampleFactory) Create() ggogio.Client {
return new(SampleClient)
}
- Run server!
import (
"log"
"github.com/atgane/ggogio"
)
func main() {
addr := ":10000"
s := ggogio.NewServer(addr, SampleFactory{})
err := s.Listen()
if err != nil {
log.Fatal(err)
}
}
- connect with telnet
telnet localhost 10000