Joyit 1 місяць тому
батько
коміт
267da94779
2 змінених файлів з 10 додано та 6 видалено
  1. 3 2
      conn/wsv2/wsv2.go
  2. 7 4
      hub.go

+ 3 - 2
conn/wsv2/wsv2.go

@@ -20,6 +20,7 @@ import (
 
 const VERSION uint8 = 2
 const PROTO string = "ws"
+const PROTO_STL string = "wss"
 
 type WsConnectV2 struct {
 	cf     *config.Config
@@ -124,8 +125,8 @@ func Server(cf *config.Config, bind string, path string, hash string, fn conn.Se
 }
 
 // 客户端,新建一个连接
-func Client(cf *config.Config, addr string, path string, hash string) (conn.Connect, error) {
-	u := url.URL{Scheme: "ws", Host: addr, Path: path}
+func Client(cf *config.Config, scheme string, addr string, path string, hash string) (conn.Connect, error) {
+	u := url.URL{Scheme: scheme, Host: addr, Path: path}
 	// 没有加密的情况
 	if hash == "" {
 		conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil)

+ 7 - 4
hub.go

@@ -562,10 +562,13 @@ func (h *Hub) ConnectToServer(channel string, force bool) (err error) {
 		return err
 	}
 	var conn conn.Connect
+	var runProto string
 	addr := net.JoinHostPort(host.Host, strconv.Itoa(int(host.Port)))
-	if host.Version == wsv2.VERSION && host.Proto == wsv2.PROTO {
-		conn, err = wsv2.Client(h.cf, addr, host.Path, host.Hash)
+	if host.Version == wsv2.VERSION && (host.Proto == wsv2.PROTO || host.Proto == wsv2.PROTO_STL) {
+		runProto = wsv2.PROTO
+		conn, err = wsv2.Client(h.cf, host.Proto, addr, host.Path, host.Hash)
 	} else if host.Version == tpv2.VERSION && host.Proto == tpv2.PROTO {
+		runProto = tpv2.PROTO
 		conn, err = tpv2.Client(h.cf, addr, host.Hash)
 	} else {
 		return fmt.Errorf("not correct protocol and version found in: %+v", host)
@@ -577,7 +580,7 @@ func (h *Hub) ConnectToServer(channel string, force bool) (err error) {
 		return err
 	}
 	// 发送验证信息
-	if err := conn.WriteAuthInfo(h.channel, h.authFunc(host.Proto, host.Version, channel, nil)); err != nil {
+	if err := conn.WriteAuthInfo(h.channel, h.authFunc(runProto, host.Version, channel, nil)); err != nil {
 		log.Println("[WriteAuthInfo ERROR]", err)
 		conn.Close()
 		host.Errors++
@@ -594,7 +597,7 @@ func (h *Hub) ConnectToServer(channel string, force bool) (err error) {
 		return err
 	}
 	// 检查版本和协议是否一致
-	if version != host.Version || proto != host.Proto {
+	if version != host.Version || proto != runProto {
 		err = fmt.Errorf("[version or protocol wrong ERROR] %d, %s", version, proto)
 		log.Println(err)
 		conn.Close()