swift 套接字连接期间SSL握手失败,(谷歌/Android电视遥控器为iOS)

jc3wubiy  于 2023-05-16  发布在  Swift
关注(0)|答案(1)|浏览(132)

我正在创建一个iOS演示,在那里我通过参考以下链接使用iOS应用程序实现控制Google/Android电视的功能。
https://github.com/Aymkdn/assistant-freebox-cloud/wiki/Google-TV-(aka-Android-TV)-Remote-Control-(v2)
这也是Node中的工作演示。https://github.com/louis49/androidtv-remote
我正在使用iOS Swift的套接字IO库实现这一点。
在连接过程中,我遇到了SSL握手失败
下面是代码

import UIKit
import SocketIO

class ConnectViewController: UIViewController {
    let manager = SocketManager(socketURL: URL(string: "wss://172.16.16.23:6467")!)
    var socket:SocketIOClient!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let ssl = SSLSecurity.init(usePublicKeys: true)
        manager.setConfigs([.secure(true),.selfSigned(false),.security(ssl),.log(true),.sessionDelegate(self),.reconnects(false),.forceWebsockets(true),.forcePolling(true)])
        
        self.socket = manager.defaultSocket
        
        
        self.socket.on(clientEvent: .connect) {data, ack in
            print("socket connected")
        }
    }

}
xzv2uavs

xzv2uavs1#

您应该使用TLS连接而不是WSS来启动Android TV和您的应用之间的配对过程。但是,一些电视供应商没有实现此功能,因为他们没有任何证书。我至少和一个电视供应商(coocaa)面临过这个问题。要检查证书是否存在,可以尝试使用OpenSSL建立连接

openssl s_client -connect <AndroidTV IP>:6467 -prexit -state -debug

相关问题