Я пытаюсь построить рукопожатие между приложением IOS и сервером Socketio Основе этого урока: Teehan+LaxSocketRocket + Socketio Неспособность построить Рукопожатие
Проблема у меня в том, что соединение не открыто правильно, я думаю, это потому, что Рукопожатие + маркер не генерируется правильно:
func initHandshake() {
let time:NSTimeInterval = NSDate().timeIntervalSince1970 * 1000
println(time)
var timeString = "\(time)"
var formattedTime = timeString.stringByReplacingOccurrencesOfString(".", withString: "-", options: NSStringCompareOptions.LiteralSearch)
println(formattedTime)
var endpoint = "http://\(server)/socket.io/1?t=\(formattedTime)"
println(endpoint)
var handshakeTask:NSURLSessionTask = session!.dataTaskWithURL(NSURL(fileURLWithPath: endpoint)!, completionHandler: { (data:NSData!, response:NSURLResponse!, error:NSError!) in
if !(error != nil) {
let stringData:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
let handshakeToken:NSString = stringData.componentsSeparatedByString(":")[0] as NSString
println("HANDSHAKE \(handshakeToken)")
self.socketConnect(handshakeToken)
}
if ((error) != nil) {
println("Didn't connect. Why?")
}
})
handshakeTask.resume()
}
Вы можете увидеть несколько попыток, которые я сделал в коде, чтобы соответствовать конечной точке URL со строкой, которая Socketio возвращается, но нет игральная кость. Он по-прежнему не подключается.
я не писал никакого Swift раньше, поэтому я довольно потерял о том, что этот код на самом деле пытается захватить:
var handshakeTask:NSURLSessionTask = session!.dataTaskWithURL(NSURL(fileURLWithPath: endpoint)!, completionHandler: { (data:NSData!, response:NSURLResponse!, error:NSError!) in
Кто-нибудь есть какие-нибудь идеи?
Я бы рекомендовал использовать библиотеку в вашем приложении IOS, которые будет абстрагироваться от деталей нижнего уровня соединения socket.io. Я использовал https://github.com/MegaBits/SIOSocket – influxd
. Я рассмотрю это сейчас, @influxd, спасибо – Helen