打造一款属于自己的go语言socket框架5效果展示

框架代码:

希望给个星星支持一下 microSocket。

服务端逻辑:

package main

import (
    "fmt"
    "log"
    msf "jd-test/microSocket"
    "strconv"
)

var ser = msf.NewMsf()

//框架逻辑
//---------------------------------------------------------------------
type Test struct {
}

func (this Test) Default() {
    fmt.Println("is default")
}

func (this Test)BeforeRequest(data map[string]string)bool{
    log.Println("before")
    return true
}

func (this Test)AfterRequest(data map[string]string){
    log.Println("after")
}

func (this Test) Hello(data map[string]string){
    fd, _ := strconv.Atoi(data["fd"])
    log.Println("收到消息了")
    ser.SessionMaster.WriteByid(uint32(fd), "Hello")
}
//---------------------------------------------------------------------

func main() {
    log.SetFlags(log.Lshortfile | log.LstdFlags | log.Llongfile)
    ser.EventPool.Register("test", &Test{})
    ser.Listening(":8565")
}

客户端逻辑:

package main

import (
    "fmt"
    "jd-test/microSocket"
    "jd-test/microSocket/util"
    "net"
)



func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:8565")
    if err != nil{
        return
    }
    defer conn.Close()

    data := make(map[string]string)
    data["module"] = "test"
    data["action"] = "Hello"
    data["name"] = "jd"
    //把map转化为string
    a := []byte(util.Map2String(data))
    //把string打包
    b := microSocket.Enpack(a)
    //发送数据
    conn.Write(b)

    res := make([]byte, 20)
    conn.Read(res)
    fmt.Println(res)
}

结论:

  1. 服务端只需要创建一个模块类实现相应的逻辑方法,然后再调用相应的方法注册一下,就可以实现一个很简单socket服务器
  2. 客户端也只需要连接,创建一个map,里面写明模块名,和接口名,最好打成一个包即可。

你可能感兴趣的:(打造一款属于自己的go语言socket框架5效果展示)