1
私は、Androidデバイスにソケット経由で接続するSwiftを使ってiOSアプリケーションを開発しています。私はStarscreamを実装し、他のデバイスに接続することができました。私の問題は、websocketDidConnectデリゲートメソッドで何かを印刷すると印刷されないということです。また、socket.isConnectedを印刷すると、falseを出力します。親切に私を助けてください。ありがとう。 Starscreamの他の選択肢も歓迎です、ありがとう!あなたはそれがviewDidLoadメソッドの外に出るとそうでない場合がリリースされるクラスのプロパティとしてそれを作るために必要Starscreamのsocket.isConnectedは常にfalseを返す
import Starscream
class SettingsViewController: UIViewController, UITextFieldDelegate, WebSocketDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let socket = WebSocket(url: NSURL(string: "ws://\(ipAddressTextField.text!):4000/")!)
socket.connect()
print("socket.isConnected \(socket.isConnected)") //this one is false
socket.onConnect = {
print("Connected...") // does not print
}
socket.onDisconnect = { (error: NSError?) in
print("websocket is disconnected: \(error?.localizedDescription)") // this one prints when I turn the wifi off
}
socket.onData = { (data: NSData) in
print("got some data: \(data.length)")
}
}
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)")
}
}