我正在使用iOS 8和Swift。我想使用官方socket.io客户端,但由于某种原因它不会尝试连接。我按照这里给出的例子:https://github.com/socketio/socket.io-client-swift
let socket = SocketIOClient(socketURL: "\(CurrentConfiguration.serverURL)")
socket.reconnects = true
socket.reconnectWait = 10
socket.nsp = "/messagelist"
// Connect
socket.connect()
socket.onAny {println("got event: \($0.event) with items \($0.items)")}
socket.on("connect") {data, ack in
println("socket connected")
}
socket.on("error") {data in
println("socket ERROR")
println(data)
}
任何人都可以证实吗?这是版本问题还是与Swift 1.2有关?
在服务器端,我甚至无法识别连接尝试。变量serverURL与之前的变量相同,并且
答案 0 :(得分:3)
请务必在致电处理程序后致电socket.connect()
。一个好的做法是使用所有必需的处理程序创建一个函数,并使用viewDidLoad
方法调用它。然后,您将调用connect方法。
示例:
let socket = SocketIOClient(socketURL: "URL")
override func viewDidLoad() {
super.viewDidLoad()
// socket.io
addHandlers()
socket.connect()
}
func addHandlers() {
self.socket.onAny {println("Got event: \($0.event), with items: \($0.items)")}
self.socket.on("processReq") {[weak self] data, ack in
// handler code here
}
}
答案 1 :(得分:1)
您应该使用SocketIOClient实例作为类属性。
class aClass {
let socket = SocketIOClient(socketURL: url)
func someFunction() {
socket.on("connect") {data, ack in
println("socket connected")
}
}
}
我认为这是因为它中使用了很多闭包。