# gnetty **Repository Path**: llakcs/gnetty ## Basic Information - **Project Name**: gnetty - **Description**: 仿netty的socket工具 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-26 - **Last Updated**: 2023-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gnetty #### 介绍 golang的socket工具,造轮子的目的主要为了快速搭建socket通信,节省成本(其实也没啥成本)。适用场景设备-iot平台,TCP网关等. #### 软件架构 工作流程图 ![输入图片说明](%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20220727000618.png) 使用的框架 1.ants: ants是一个高性能的 goroutine 池. 传送门:https://gitee.com/mirrors/ants #### 使用说明 //创建配置1 o := OptionBuild() o.WithPort("10010") //设置端口 o.WithChanSize(1000) //设置队列大小 o.WithBufferSize(1024) //设置接收缓冲区大小 o.WithEnale(true) //是否启用 o.WithChanReadHandler(channelread) //设置业务处理器 o.WithDecodeHandler(decode) //设置解码处理器 o.WithEncodeHandler(encode) //设置编码处理器 //创建配置2 o1 := &ChanOption{ Port: "10086", ReadTimeout: 0, BufferSize: 1024, ChanSize: 1000, Enable: true, ChanReadHandler: channelread1, DecoderHandler: decode1, EncodeHandler: encode1, } //创建tcp服务器,设置主线程和工作线程绑定配置 s := NewTcpServer(30, 30, o, o1) //开始监听 s.ListenTcp() #### 回调处理器 //业务处理函数 func channelread(c *common.ChannelRead) { //字符串类型 c.DecodeData.(string) //结构体 interface转结构体 t := c.DecodeData.(test) log.Println("channel---read:", t.Age) //数据发送到编码通道 c.WriteAndFlush(c.DecodeData) } //解码处理函数 func decode(d *common.DecodeCtx) { log.Println("decode---read:") //字符串类型 var t test json.Unmarshal(d.In, &t) //把解码后的数据发送到业务通道 d.Add(t) } //编码处理函数 func encode(e *common.EncodeCtx) { log.Println("encode---read:") //a := []byte("hello world") //结构体发送 t := &test{ Name: "lee", Age: "18", } buf, _ := json.Marshal(t) //把编码数据往客户端发送 e.WriteBytes(buf) } type test struct { Name string Age string } #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request