func (si *ServerInfo) ProcessProtoConn(conn net.Conn, pp *kdp.KDP) { // 将连接信息进行赋值 connInfo := make(map[string]string) json.Unmarshal(pp.GetBody(), &connInfo) // 读取出连接时填写的 name 字段 KolonseWeb.DefaultLogs().Info("收到连接请求数据 Remote:%v Local:%v info:%v", conn.RemoteAddr().String(), conn.LocalAddr().String(), string(pp.GetBody())) si.ChannelConn.SetConn(conn) }
func Close(conn net.Conn, pp *kdp.KDP) { remoteAddr, ok := pp.Get("RemoteAddr") if !ok { panic("协议中没有找到 RemoteAddr") } cp, ok := ConnMap[remoteAddr] if !ok { return } cp.dstConn.Close() }
func Req(conn net.Conn, pp *kdp.KDP) { remoteAddr, ok := pp.Get("RemoteAddr") if !ok { panic("协议中没有找到 RemoteAddr") } cp, ok := ConnMap[remoteAddr] if !ok { // 创建一个新的连接 cpNew, err := Create(conn, remoteAddr) if err != nil { // 发送关闭连接请求 return } ConnMap[remoteAddr] = cpNew cp = cpNew } // 将数据发送到连接上 cp.dstConn.Write(pp.GetBody()) }
func (si *ServerInfo) ProcessProtoClose(conn net.Conn, pp *kdp.KDP) { remoteAddr, ok := pp.Get("RemoteAddr") if !ok { // 连接已经不存在 通知客户端关闭连接 KolonseWeb.DefaultLogs().Error("协议不存在 RemoteAddr", remoteAddr) return // } pWho, ok := si.Parters[remoteAddr] if !ok { // 连接已经不存在 通知客户端关闭连接 KolonseWeb.DefaultLogs().Error("RemoteAddr:%v not found", remoteAddr) return // } // 发送消息 KolonseWeb.DefaultLogs().Info("向请求源 %v 发送数据,长度:%v", conn.RemoteAddr().String(), len(pp.GetBody())) pWho.conn.Close() }