【发布时间】:2015-03-27 15:04:04
【问题描述】:
我正在尝试根据本教程在 iOS 应用和 Socketio 服务器之间构建握手:Teehan+Lax
我遇到的问题是连接从未正确打开,我认为这是因为 Handshake + 令牌没有正确生成:
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 握手的较低级别的细节。我用过github.com/MegaBits/SIOSocket
-
我现在会调查一下,@influxd,谢谢
标签: sockets swift socket.io socketrocket