atgane / ggogio

golang tcp server framework ... would like to be

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐Ÿ‘ ggogio

Go Report Card golang-test

ggogio is a lightweight tcp server framework ... world like to be. It aims for simple use and lightness, maybe.

๐Ÿ˜ถโ€๐ŸŒซ๏ธ how to use

  1. 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)))
	}
}
  1. Create SampleClient factory.
type SampleFactory struct {
}

func (s SampleFactory) Create() ggogio.Client {
	return new(SampleClient)
}
  1. 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)
	}
}
  1. connect with telnet
telnet localhost 10000

About

golang tcp server framework ... would like to be

License:MIT License


Languages

Language:Go 100.0%