2016-06-14 5 views
1

나는 성공적으로 로컬 서버에 연결하려고했습니다. 다음과 같이 내 코드입니다 - "TRYING DONE"과 "연결 시도 중"Swift Starscream websocket pod 아니 로컬 서버에 연결하고 대리자 메서드가 없습니다

class SocketManager: NSObject, WebSocketDelegate { 
    var socket: WebSocket! 

    override init() { 
     super.init() 

     self.socket = WebSocket(url: NSURL(string: "ws://localhost:9292/")!) 
     self.socket.delegate = self 
     print("TRYING TO CONNECT") 
     self.socket.connect() 
     print("DONE TRYING") 
    } 

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

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

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

모두 인쇄 문을 로그에 존재하지만, 위임 방법 중 어느 것도 호출 할 보이지 않는다.

여기에 무엇이 잘못 될지 잘 모르겠습니다.

도움을 주시면 감사하겠습니다.

+0

혹시이 문제를 해결 했습니까? 동일한 것을 보았습니다. – RickR

+0

문제에 대한 답변을 게시했습니다. 도움이되기를 바랍니다. – Dwijen

답변

0

문제점은 AppDelegate에서 클래스 SocketManager의 인스턴스를 만들고 그 변수가 범위를 벗어났습니다.

이 문제를 해결하기 위해 대리자 메서드를 예상대로 호출 한 후에 AppDelegate에 인스턴스 변수를 만들었습니다.

다음은 Github repo에 게시 한 문제의 링크입니다.

https://github.com/daltoniam/Starscream/issues/203

는 도움이되기를 바랍니다.