2016-05-19 10 views
0

Ich versuche, ein Bild von meinem NodeJS Server zu einem iOS-Client über Socket.ioSwift socket.io und Knoten socket.io Binärdatei Senden (Bild)

senden Ich bin mit socket.io auf Server-Seite und socket.io-client-swift auf der Client-Seite.

Ich schicke die binären Daten wie folgt aus:

fs.readFile(imageName+".jpg", function(err, buf){ 
    // it's possible to embed binary data 
    // within arbitrarily-complex objects 
    io.emit('getPhoto', { image: true, buffer: buf }); 
}); 

Wie sein dokumentiert in http://socket.io/blog/introducing-socket-io-1-0/#binary

Aber mein Problem ist, dass ich weiß nicht, wie die Daten auf Client-Seite zu verarbeiten.

Ich habe versucht, es als NSInputStream zu werfen, aber es wird ein Casting-Fehler auf diesem erhalten.

Auf meiner Client-Seite mache ich das:

socket.on("getPhoto") { data,ack in 
     let tmp = data[0] as? NSArray 
     let buffer = tmp![1] as? NSData 

     if (buffer != nil) { 
      let img = UIImage(data: buffer!) 
      self.setImage!(img!) 
     } 
} 

Wie bekomme ich das Bild aus diesem Strom?

Vielen Dank für jede Hilfe

Antwort

0

Haben Sie versucht, so etwas wie:

socket.on("getPhoto") { data,ack in 
    if let buffer = data[0] as? NSData { 
     let img = UIImage(data: buffer) 
    } 
} 
+0

ich den Fehler bekommen: Kann nicht Wert vom Typ ‚[ANYOBJECT]‘ konvertieren Ah eingeben ‚NSData‘ in Zwang – Kingalione

+0

Ja, Daten sind ein Array. Sie müssen in "NSData" umwandeln oder "data [0] als NSData" umwandeln. – sas

+0

Oh yeah aber du musst mit casten wie? Aber damit geht es nicht in den if-Block. – Kingalione