Joyit преди 1 месец
родител
ревизия
bc41f3765d
променени са 4 файла, в които са добавени 19 реда и са изтрити 9 реда
  1. 6 0
      PROTO.md
  2. 6 2
      const.go
  3. 6 6
      hub.go
  4. 1 1
      type.go

+ 6 - 0
PROTO.md

@@ -5,3 +5,9 @@
 3. 建立连接后,如果需要建立代理,客户端发送建立代理的数据包
 4. 代理的验证需要客户端处理
 5. 代理建立后,服务端就只单纯转发代理数据
+
+## 代理建立流程
+
+1. 建立到代理服务节点的连接,并通过auth验证
+2. 客户端发送指令到代理服务节点,建立代理服务到服务节点的连接,返回连接结果
+3. 客户端与服务节点通过auth验证,线路就建立好

+ 6 - 2
const.go

@@ -33,8 +33,12 @@ const (
 )
 
 // 转换 id 到对应的消息
-func IdMsg(id uint8) string {
+func StateIdString(id uint8) string {
 	switch id {
+	case STATE_OK:
+		return "OK"
+	case STATE_FAILED:
+		return "FAILED"
 	case NEXT_SUBSCRIBE:
 		return "NEXT SUBSCRIBE"
 	case NEXT_MIDDLE:
@@ -54,5 +58,5 @@ func IdMsg(id uint8) string {
 	case NO_MATCH_CMD:
 		return "NO MATCH CMD"
 	}
-	return fmt.Sprintf("UNKNOWN %d", id)
+	return fmt.Sprintf("STATE ID %d", id)
 }

+ 6 - 6
hub.go

@@ -278,7 +278,7 @@ func (h *Hub) sendRequest(gd *GetData) (count int, err error) {
 						go h.outResponse(&ResponseData{
 							Id:    id,
 							State: config.GET_TIMEOUT,
-							Data:  fmt.Appendf(nil, "[%s] %s %s", IdMsg(config.GET_TIMEOUT), conn.channel, gd.Cmd),
+							Data:  fmt.Appendf(nil, "[%s] %s %s", StateIdString(config.GET_TIMEOUT), conn.channel, gd.Cmd),
 							conn:  conn,
 						})
 						// 检查是否已经很久时间没有使用连接了
@@ -331,7 +331,7 @@ func (h *Hub) sendRequest(gd *GetData) (count int, err error) {
 		if i == 0 && h.connectHostFunc != nil && h.filterToChannelFunc != nil {
 			channel := h.filterToChannelFunc(gd.Filter)
 			if channel == "" {
-				err = errors.New(IdMsg(NO_MATCH_CONNECT))
+				err = errors.New(StateIdString(NO_MATCH_CONNECT))
 				log.Println("not channel found with cmd:", gd.Cmd)
 				return 0, err
 			}
@@ -398,7 +398,7 @@ func (h *Hub) requestFromNet(request *RequestData) {
 						if err != nil {
 							log.Println(err.Error())
 							state = config.CONVERT_FAILED
-							byteData = fmt.Appendf(nil, "[%s] %s %s", IdMsg(config.CONVERT_FAILED), request.conn.channel, request.Cmd)
+							byteData = fmt.Appendf(nil, "[%s] %s %s", StateIdString(config.CONVERT_FAILED), request.conn.channel, request.Cmd)
 						}
 					}
 				}
@@ -423,7 +423,7 @@ func (h *Hub) requestFromNet(request *RequestData) {
 	request.conn.sendResponse <- &ResponseData{
 		Id:    request.Id,
 		State: config.NO_MATCH_CMD,
-		Data:  fmt.Appendf(nil, "[%s] Channel: %s, Cmd: %s", IdMsg(config.NO_MATCH_CMD), channel, cmd),
+		Data:  fmt.Appendf(nil, "[%s] Channel: %s, Cmd: %s", StateIdString(config.NO_MATCH_CMD), channel, cmd),
 	}
 }
 
@@ -502,7 +502,7 @@ func (h *Hub) GetOneWithStruct(gd *GetData) (response *ResponseData) {
 	if gd.Filter == nil {
 		return &ResponseData{
 			State: config.NO_MATCH_FILTER,
-			Data:  []byte(IdMsg(config.NO_MATCH_FILTER)),
+			Data:  []byte(StateIdString(config.NO_MATCH_FILTER)),
 		}
 	}
 	gd.Max = 1
@@ -513,7 +513,7 @@ func (h *Hub) GetOneWithStruct(gd *GetData) (response *ResponseData) {
 	if response == nil {
 		return &ResponseData{
 			State: config.NO_MATCH_CONNECT,
-			Data:  []byte(IdMsg(config.NO_MATCH_CONNECT)),
+			Data:  []byte(StateIdString(config.NO_MATCH_CONNECT)),
 		}
 	}
 	return

+ 1 - 1
type.go

@@ -117,7 +117,7 @@ func (r *ResponseData) Out() (state uint8, data []byte) {
 
 // 输出可视化
 func (r *ResponseData) String() string {
-	return fmt.Sprintf("id: %d, state: [%d]%s, data: %s", r.Id, r.State, IdMsg(r.State), string(r.Data))
+	return fmt.Sprintf("id: %d, state: [%d]%s, data: %s", r.Id, r.State, StateIdString(r.State), string(r.Data))
 }
 
 type PingData struct {