J'essaie de me connecter à la socket wss, et le nom d'hôte ressemble à ceci: "myhostname.com/ws/v2". Voici comment je commence la connexion:Comment se connecter à une socket wss où le nom d'hôte a un chemin supplémentaire en utilisant NSStream?
let host = "myhostname.com/ws/v2"
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host as CFString, 443, &readStream, &writeStream)
inputStream = readStream!.takeRetainedValue()
outputStream = writeStream!.takeRetainedValue()
outputStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL, forKey: Stream.PropertyKey.socketSecurityLevelKey)
inputStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL, forKey: Stream.PropertyKey.socketSecurityLevelKey)
inputStream.schedule(in: .current, forMode: .commonModes)
outputStream.schedule(in: .current, forMode: .commonModes)
inputStream.delegate = self
outputStream.delegate = self
inputStream.open()
outputStream.open()
Cela échoue avec une erreur: The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 1.)
Cependant, si je retire le chemin du nom d'hôte, de sorte qu'il ressemble à ceci: myhostname.com
alors dans mon délégué je reçois un événement openCompleted
. Cependant, il ne répond pas à mes messages après cela, je suppose que c'est parce que je suis connecté à une mauvaise socket, puisque j'ai supprimé le chemin.
Quelle est la bonne façon de se connecter à une socket lorsque le nom d'hôte a un chemin supplémentaire?