Starscream icon indicating copy to clipboard operation
Starscream copied to clipboard

The connection of websocket iOS13 above is normal, but the connection below iOS13 cannot be connected

Open qtliuh opened this issue 4 years ago • 1 comments

let url = "ws://asr-rt-ws-uat.hivoice.cn:8080/v1/ws"
let appkey = "u7vstd7obbube7do76nlv3m3k54igs4qdx7kpoai"
let secret = "3425bffc8bac9aa135389aeda8629d87"
let time = Int(Date.init().timeIntervalSince1970*1000)
 let sign = "\(appkey)\(time)\(secret)".SHA1().uppercased()
 let builder = "\(url)?time=\(time)&appkey=\(appkey)&sign=\(sign)"
 let builderURL = URL.init(string: builder)!
 let request = URLRequest(url: builderURL)
 self.socket = WebSocket(request: request, certPinner: FoundationSecurity(allowSelfSigned: true), compressionHandler: nil, useCustomEngine: false)
 self.socket.delegate = self

//iOS13 connected(["Sec-WebSocket-Protocol": ""]) //iOS12 viabilityChanged(true) error(Optional(Starscream.HTTPUpgradeError.notAnUpgrade(403)))

qtliuh avatar Aug 06 '20 09:08 qtliuh

I solved the issue by falling back to use FoundationTransport() instead of TCPTransport().

if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *), !useCustomEngine {
        self.init(request: request, engine: NativeEngine())
//} else if #available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) {
//    self.init(request: request, engine: WSEngine(transport: TCPTransport(), certPinner: certPinner, compressionHandler: compressionHandler))
} else {
    self.init(request: request, engine: WSEngine(transport: FoundationTransport(), certPinner: certPinner, compressionHandler: compressionHandler))
}

CRoig avatar Oct 14 '20 10:10 CRoig