2015-04-15 12 views
9

Sto lavorando con iOS 8 e Swift. Voglio usare il client ufficiale di socket.io ma per qualche motivo non tenta di connettersi. Ho seguito l'esempio dato qui: https://github.com/socketio/socket.io-client-swiftsocket.io problemi di connessione client ufficiale?

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

Qualcuno può confermare? Si tratta di un problema di versione o forse correlato a Swift 1.2?

Sul lato server non riesco nemmeno a riconoscere un tentativo di connessione. La variabile serverURL è la stessa di prima e

risposta

3

Assicurarsi di chiamare socket.connect() dopo aver chiamato i gestori. Una buona pratica sarebbe quella di creare una funzione con tutti i gestori richiesti e chiamarla nel metodo viewDidLoad. Successivamente, chiameresti il ​​metodo di connessione.

Esempio:

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

È necessario utilizzare l'istanza SocketIOClient come proprietà della classe.

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

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

Penso che sia perché ci sono molte chiusure utilizzate in esso.

+0

bene ok, posso fare una nuova classe e fare tutto ciò che un metodo di classe, ma come faccio a collegare in VC comunque? Ho provato la tua soluzione ma ancora non provo nemmeno a connetterti – longbow

Problemi correlati