2016-05-05 15 views
6

Değişken geçersiz değil, iyi bir bağlantım var ve url doğru ama temsilci yöntemleri çağrılıyor. Ayrıca benStarscream delegeleri çağrılmadı

let socket = WebSocket(url: NSURL(string: "UrlHere:port/")!) 
      socket.delegate = self; 
      socket.connect() 
      if socket.isConnected { 
       print("websocket is connected") 
      } 

    func websocketDidConnect(ws: WebSocket) { 
     print("websocket is connected") 
    } 

    func websocketDidDisconnect(ws: WebSocket, error: NSError?) { 
     if let e = error { 
      print("websocket is disconnected: \(e.localizedDescription)") 
     } else { 
      print("websocket disconnected") 
     } 
    } 

    func websocketDidReceiveMessage(ws: WebSocket, text: String) { 
     print("Received text: \(text)") 
    } 

    func websocketDidReceiveData(ws: WebSocket, data: NSData) { 
     print("Received data: \(data.length)") 
    } 

    func websocketDidReceivePong(socket: WebSocket) { 
     print("Got pong!") 
    } 
+1

soketinin, sınıfın bir üyesi değişkeni olduğunu ve bir yönteme yerel değil değişken olması durumunda, film şeridi için link İşte! – Gruntcakes

+0

Bunu yapmak benim sorunumu çözdü. teşekkür ederim – user1079052

cevap

8

Soket WebSocketDelegate uygulayan am etrafında yapışır emin olmak için sınıfın bir özellik veya değişken olmalıdır.

sadece bir fonksiyonu üzerine tahsis Eğer kapsam dışında düşecek yığını ve delegeler İşte

denilen olsun asla ne olmaz diye projemde kullanmış kodudur

import UIKit 
//import WebSocket 
import Starscream 

class ViewController: UIViewController,WebSocketDelegate,WebSocketPongDelegate { 

    @IBOutlet weak var wsURL: UITextField! 

    @IBOutlet weak var wsConsole: UITextView! 

    @IBOutlet weak var wsMessage: UITextField! 

    var socket:WebSocket! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

//  var webSocketObj:WebSocket = WebSocket() 
//  webSocketObj.ipAddressText = "10.12.1.101" 
//  webSocketObj.portText = "8888" 
//  webSocketObj.dataToSendText = "hi" 
//  webSocketObj.dataRecievedTextView = "" 
//  webSocketObj.connectedLabel = "" 
//  webSocketObj.connectToServer() 


     wsURL.text="ws://10.12.1.101:8888/" 
     wsMessage.text="Hi" 
     self.navigationItem.leftBarButtonItem?.title="Connect" 
     self.navigationItem.rightBarButtonItem?.enabled=false 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func websocketDidConnect(socket: WebSocket){ 
    wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket got connected") 
     self.navigationItem.leftBarButtonItem?.title="Disconnect" 
     self.navigationItem.rightBarButtonItem?.enabled=true 
    } 

    func websocketDidDisconnect(socket: WebSocket, error: NSError?){ 
    wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket got disconnected") 
    self.navigationItem.leftBarButtonItem?.title="Connect" 
    self.navigationItem.rightBarButtonItem?.enabled=false 
    } 

    func websocketDidReceiveMessage(socket: WebSocket, text: String){ 
    wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket got a message from server:").stringByAppendingString(text) 
    } 

    func websocketDidReceiveData(socket: WebSocket, data: NSData){ 
     print("websocket received data",data) 
    } 

    @IBAction func writeText(sender: UIBarButtonItem) { 
     wsConsole.text = wsConsole.text .stringByAppendingString("\n Client sent a message:").stringByAppendingString(wsMessage.text!) 
     socket.writeString(wsMessage.text!) 
     self.view .endEditing(true) 
    } 

    @IBAction func disconnect(sender: UIBarButtonItem) { 
     self.view .endEditing(true) 
     if socket == nil{ 
      connect(sender) 
     } 
     else if socket.isConnected { 
      socket.disconnect() 
     } else { 
      connect(sender) 
     } 
    } 

    func connect(sender:UIBarButtonItem){ 
     socket = WebSocket(url: NSURL(string:wsURL.text!)!) 
     socket.delegate = self 
     socket.connect() 
    } 

    func websocketDidReceivePong(socket: WebSocket){ 
     wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket received pong") 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 
İlgili konular