J'ai une application dans laquelle je dois envoyer des données au serveur en utilisant la connexion socket et lire les données qui seront envoyées par le serveur. J'utilise la classe AsyncSocket
pour écrire et lire des données. J'ai réussi à écrire des données sur le serveur et le serveur peut voir les données qui ont été envoyées par application. Maintenant, le problème est que chaque fois que le serveur envoie des données à l'application, comment puis-je recevoir ces données en utilisant la classe AsyncSocket
. Voici mon code. J'ai mis la méthode des délégués pour lire les données mais elle n'a jamais appelé.Comment recevoir des données du serveur via socket dans iOS?
var socket = AsyncSocket()
socket = AsyncSocket(delegate: self)
self.socketConnect()
func socketConnect() {
do {
try socket?.connectToHost("IP Address", onPort: 6968)
} catch _ as NSError {
}
}
//MARK: - AsyncSocket Delegates method
func onSocket(sock: AsyncSocket!, didConnectToHost host: String!, port: UInt16) {
print("Connected to host : \(host) with Port : \(port)")
let alert:UIAlertController = UIAlertController(title: "Connected", message: "Host:\(host) ** Port:\(port)", preferredStyle:.Alert)
self.presentViewController(alert, animated: true, completion: nil)
let action:UIAlertAction = UIAlertAction(title: "Ok", style: .Default) { (UIAlertAction) -> Void in
print("Ok Pressed")
}
alert .addAction(action)
let dict = ["iUserId":"100","iRideId":"276","type":"client"] // For client side
var jsonString = NSString()
do {
let data = try NSJSONSerialization.dataWithJSONObject(dict , options: NSJSONWritingOptions.PrettyPrinted)
jsonString = NSString(data: data, encoding: NSUTF8StringEncoding)!
}catch let error as NSError {
print(error)
}
let reqData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
socket.writeData(reqData, withTimeout: 1.0, tag: 100)
}
func onSocket(sock: AsyncSocket!, didReadPartialDataOfLength partialLength: UInt, tag: Int) {
print("Read partial data")
}
func onSocket(sock: AsyncSocket!, didWriteDataWithTag tag: Int) {
print("Data write successfully")
}
func onSocket(sock: AsyncSocket!, didReadData data: NSData!, withTag tag: Int) {
print("Data read successfully")
}
func onSocket(sock: AsyncSocket!, willDisconnectWithError err: NSError!) {
print("Socket disconnect with error :\(err.description)")
}
func onSocket(sock: AsyncSocket!, didAcceptNewSocket newSocket: AsyncSocket!) {
print("Accept new socket")
}
Est-ce que cette classe (la déléguée) hérite de 'NSObject'? http://stackoverflow.com/a/24225381/653513 –