2015-04-15 23 views
9

iOS 8 ve Swift ile çalışıyorum. Resmi socket.io istemcisini kullanmak istiyorum ama bir sebepten dolayı bağlanmaya çalışmaz. https://github.com/socketio/socket.io-client-swiftsocket.io resmi istemci bağlantısı sorunları?

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) 
} 

kimse bu teyit edebilir: Burada verilen örnek izledi? Bu bir sürüm sorun mu var veya belki Swift 1.2 ile ilgili mi? Sunucu tarafında bir bağlantı girişimini bile tanıyamıyorum. ServerURL değişkeni, daha önce sahip olduğumla aynı ve

cevap

3

İşleyicilerinizi aradıktan sonra socket.connect()'u aradığınızdan emin olun. İyi bir uygulama, tüm gerekli işleyicilerinizle bir işlev oluşturmak ve bunu viewDidLoad yönteminde aramak olacaktır. Aftewards sonra bağlantı yöntemini çağırırsınız.

Örnek:

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

SocketIOClient örneğini sınıf özelliği olarak kullanmalısınız.

class aClass { 
    let socket = SocketIOClient(socketURL: url) 

    func someFunction() { 
     socket.on("connect") {data, ack in 
      println("socket connected") 
     } 
    } 
} 

İçinde kullanılan kapanışları çok şey var çünkü düşünüyorum.

+0

iyi Tamam, ben yeni bir sınıf yapmak ve her şeyi sınıf yöntemi yapmak ama yine VC içinde nasıl bağlarım olabilir? Çözümünüzü denedim ama hala bağlanmaya bile çalışmaz – longbow

İlgili konular