I got the same error when i try to use 1885 port numer.
I have added below code in my existing code:
mqttReference?.dispatchQueue = DispatchQueue.global(qos: .userInitiated)
//mqttReference?.logLevel = .debug
mqttReference?.enableSSL = true
mqttReference?.sslSettings = [
GCDAsyncSocketManuallyEvaluateTrust: NSNumber(booleanLiteral: true),
GCDAsyncSocketUseCFStreamForTLS: NSNumber(booleanLiteral: false),
kCFStreamSSLPeerName as String: "" as NSString,
GCDAsyncSocketSSLProtocolVersionMin: NSNumber(integerLiteral: Int(SSLProtocol.tlsProtocol1.rawValue)),
GCDAsyncSocketSSLProtocolVersionMax: NSNumber(integerLiteral: Int(SSLProtocol.tlsProtocol12.rawValue)),
]
My complete code now:
// let clientID = "CocoaMQTT-" + String(ProcessInfo().processIdentifier)
mqttReference = CocoaMQTT(clientID: "", host: mqttProfile.baseURL, port: UInt16(mqttProfile.port))
mqttReference?.username = mqttProfile.userName
mqttReference?.password = mqttProfile.password
mqttReference?.allowUntrustCACertificate = true
mqttReference?.dispatchQueue = DispatchQueue.global(qos: .userInitiated)
//mqttReference?.logLevel = .debug
mqttReference?.enableSSL = true
mqttReference?.sslSettings = [
GCDAsyncSocketManuallyEvaluateTrust: NSNumber(booleanLiteral: true),
GCDAsyncSocketUseCFStreamForTLS: NSNumber(booleanLiteral: false),
kCFStreamSSLPeerName as String: "" as NSString,
GCDAsyncSocketSSLProtocolVersionMin: NSNumber(integerLiteral: Int(SSLProtocol.tlsProtocol1.rawValue)),
GCDAsyncSocketSSLProtocolVersionMax: NSNumber(integerLiteral: Int(SSLProtocol.tlsProtocol12.rawValue)),
]
mqttReference?.autoReconnect = true
mqttReference?.backgroundOnSocket = mqttProfile.allowBackgroundMQTT
mqttReference?.delegate = self
do {
if((mqttReference?.connect())!){
...........
Now it's working fine.