func (s *Server) init() { if s.SessionTimeOut == 0 { s.SessionTimeOut = 20 } s.DPM = NewDataPkgManager(5, 5) if s.Id == "" { s.Id = util.GetUUID() } if s.TimeOut == 0 { //默认300秒,没有任何数据就关闭链接 s.TimeOut = 300 } if s.MaxClient == 0 { //默认最大100个链接 s.MaxClient = 10 } if s.MaxData == 0 { //未设置读取报文大小,默认800字节 s.MaxData = 800 } //判断启动的端口是否为空,如果为空给一个默认端口 if s.Port == 0 { //默认8888端口启动 s.Port = 8888 } //指定session会话的超时时间 s.MemProvider = NewSessionStore(s.SessionTimeOut) //指定最大链接数量 s.maxClientChan = make(chan int, s.MaxClient) if s.Name == "" { //服务器名字没有指定使用IP加端口为服务器名称 s.Name = s.Ip + ":" + strconv.Itoa(s.Port) } }
func (c *Conn) WriteJsonFaceCode(b interface{}, faceCode int) { var rsp Respon //请求数据的ID if c != nil && c.Request != nil { rsp.Header.RequestId = c.Request.Header.RequestId rsp.Header.UserUid = c.Request.Header.UserUid rsp.Header.UserAddr = c.Request.Header.UserAddr } rsp.Header.FaceCode = faceCode rsp.Header.ResponsId = util.GetUUID() rsp.Header.ResponTime = time.Now().Unix() switch e := b.(type) { case *errcode.Error: rsp.Header.ErrMsg = e.Msg rsp.Header.ErrCode = e.Code case error: rsp.Header.ErrMsg = e.Error() rsp.Header.ErrCode = -1 default: rsp.Header.ErrCode = 0 rsp.Body = b } d, _ := json.Marshal(&rsp) d = util.ByteLen(d) //加入包推送信息 if c.Server != nil && c.Server.DPM != nil && rsp.Header.FaceCode != 520 && rsp.Header.FaceCode != 200 { c.Server.DPM.AddPkg(rsp.Header.ResponsId, c.Conn.RemoteAddr().String(), rsp.Header.UserUid, d) } c.Write(d) }
func NewRequest(conn net.Conn, data interface{}, s *Server) *Request { var r Request r.Header.UserAddr = conn.LocalAddr().String() r.Header.RequestId = util.GetUUID() r.Header.RequestTime = time.Now().Local().Unix() r.Body = data if s != nil { r.Header.UserUid = s.Id } return &r }