2015-04-15 21 views
9

Ich arbeite mit iOS 8 und Swift. Ich möchte den offiziellen socket.io-Client verwenden, aber aus irgendeinem Grund versucht es nicht, eine Verbindung herzustellen. Ich folgte dem Beispiel hier gegeben: https://github.com/socketio/socket.io-client-swiftsocket.io offizielle Client-Verbindung Probleme?

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

Kann das jemand bestätigen? Ist dies ein Versionsproblem oder steht es mit Swift 1.2 in Verbindung?

Auf der Serverseite kann ich sogar einen Verbindungsversuch nicht erkennen. Die Variable serverURL ist die gleiche wie zuvor und

Antwort

3

Stellen Sie sicher, dass Sie socket.connect() anrufen, nachdem Sie Ihre Handler angerufen haben. Eine gute Übung wäre, eine Funktion mit allen erforderlichen Handlern zu erstellen und sie in der viewDidLoad-Methode aufzurufen. Anschließend würden Sie die Methode connect aufrufen.

Beispiel:

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

Sie sollten die SocketIOClient-Instanz als Klasseneigenschaft verwenden.

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

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

Ich denke, es ist, weil es viele Verschlüsse in es verwendet wird.

+0

gut ok, ich kann eine neue Klasse tun und alles, was eine Klassenmethode machen, aber wie verbinde ich in der VC überhaupt? Ich habe versucht, Ihre Lösung, aber es wird immer noch nicht versuchen, eine Verbindung herzustellen – longbow

Verwandte Themen