μλ², ν΄λΌμ΄μΈνΈ κ°λ°μ EventListener κΈ°λ°μΌλ‘ μ½κ³ λΉ λ₯΄κ² κ°λ° ν μμλλ‘ λ§λ€μ΄μ§ golang socket framework μ λλ€.
package main
import (
"fmt"
"sync"
"github.com/InoFlexin/serverbase/base"
)
type MyMessage base.Message
func (m MyMessage) OnMessageReceive(message *base.Message, client net.Conn) {
fmt.Println("receive: " + message.Json + " key: " + message.Key)
packetMessage := base.Message{Json: "pong", Key: base.GetServerKey(), Action: base.ON_MSG_RECEIVE}
base.Write(&packetMessage, client)
}
func (m MyMessage) OnConnect(message *base.Message, client net.Conn) {
fmt.Println("on connect: "+message.Json+" action: %d", message.Action)
}
func (m MyMessage) OnClose(err error) {
log.Println(err)
}
func main() {
wg := sync.WaitGroup{}
ev := MyMessage{} // μλ² μ΄λ²€νΈ μ μΈ
boot := base.Boot{Protocol: "tcp",
Port: ":5092",
ServerName: "test_server",
Callback: ev,
ReceiveSize:
Complex: false}
// server boot option μ€μ
wg.Add(1) // synchronized gorutine
go base.ServerStart(boot, &wg)
wg.Wait()
}package main
import (
"fmt"
"sync"
"github.com/InoFlexin/serverbase/base"
"github.com/InoFlexin/serverbase/client"
)
type MyClientMessage base.Message //Client Message νμ
μ μ
// =================== Client Event Listeners ======================
func (m MyMessage) OnMessageReceive(message *base.Message, client net.Conn) {
fmt.Println("on message receive: "+message.Json+" action: %d", message.Action)
base.Write(&base.Message{Json: "pong", Action: base.ON_MSG_RECEIVE}, client)
}
func (m MyMessage) OnConnect(message *base.Message, client net.Conn) {
fmt.Println("on connect: "+message.Json+" action: %d", message.Action)
}
func (m MyMessage) OnClose(err error) {
log.Println(err)
}
// ==================================================================
func main() {
wg := sync.WaitGroup{}
event := MyClientMessage{}
clientBoot := client.ClientBoot{Protocol: "tcp",
HostAddr: "localhost",
HostPort: ":5092",
Callback: event,
BufferSize: 1024
Complex: true}
wg.Add(1) // synchronized goroutine
go client.ConnectServer(&clientBoot, &wg)
wg.Wait()
/*
ν΄λΉ νλ μμν¬μμλ ν΄λΌμ΄μΈνΈμ ν
μ€νΈλ₯Ό μν SendPing ν¨μκ° μ‘΄μ¬νλ€.
*/
serverError := client.SendPing(time.Second * 2)
if serverError != nil {
log.Fatal(serverError)
}
}- v1.0.1
- Server/Client Socket Option ꡬ쑰체
- EventListener interface μ μ
- μμ μμ±
- Server/Client Logic μ μ
- goroutine sync μ§μ
- session μ§μ
- v1.0.2
- Json κΈ°λ° ν΅μ μ§μ
- v1.0.3
- Bootꡬ쑰체μ 볡ν©μλ² μ§μμ¬λΆ μΆκ°
- OnClose μ½λ°± ν¨μλ‘ μ€λ μΈμκ°μ Messageμμ errorλ‘ λ³κ²½
- μλ² μ½λ λ΄λΆ λ‘μ§ μμ
- v1.0.4
- κ° νλ‘μκ° μλ³μλ₯Ό μΆκ° base.Message.Keyλ‘ μ¬μ©κ°λ₯
- Session ꡬν μ± μμ μμ λͺ¨λλ‘ λκΉ
- SocketMessage μΆκ°
- session.goμμ μ°κ²°λ λͺ¨λλ€ ν€ μ‘°ν κ°λ₯ (μΈμ ꡬνμ μμλͺ¨λμμ ν΄μΌν¨)
λ¨λμ - wsnam0507@gmail.com