2016-05-05 8 views
6

変数がnilではない、接続が良好でURLが正しいが代理メソッドが呼び出されていない。また、私はWebSocketDelegateを実装していますStarscream代理人が呼び出されていない

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

ソケットは、私が想定しているクラスのメンバ変数であり、メソッドのローカル変数ではありませんか? – Gruntcakes

+0

それを私の問題を解決するプロパティにする。ありがとうございました – user1079052

答えて

8

ソケットは、あなたのクラスのプロパティまたは変数である必要があります。

あなただけの機能でそれを割り当てた場合、それはスコープの外に落ちるスタックし、デリゲートはここ

と呼ばれることはありません飽きないだろう、私は念のために私のプロジェクトで使用しているコードがある

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


} 

ここではlinkをストーリーボードにしたい場合に備えます

関連する問題