Swift socket.io .emit()没有触发

时间:2016-04-06 19:09:22

标签: ios swift sockets

我是套接字的新手,我遇到了以下问题,我使用this库将我的应用程序连接到我的nodejs服务器。 我想知道为什么我以下列方式调用socket.emit()并不起作用:

override func viewDidLoad() {
    var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)

    socket.emit("ping","some data");
    socket.connect();
}

它既不能正常工作,也不能刷插入socket.econnect和socket.connect函数,但是如果我点击一个按钮就可以触发socket.emit函数:

override func viewDidLoad() {
   var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)
   socket.connect();
}

@IBAction func sendMessage(sender: AnyObject) {
   socket.emit("ping","some data");
}

我想我在这里遗漏了一些东西,如果有人可以向我解释这件事会很棒

1 个答案:

答案 0 :(得分:2)

在调用emit之前,套接字需要连接。您可能应该等到发出连接之后再进行连接。试试这个:

override func viewDidLoad() {
    let socket = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)
    socket.on("connect") { _, _ in
        print("socket connected")
        socket.emit("ping", "data")
    }
    socket.on("ping") { _, _ in
        print("ping received")
    }
    socket.connect()
}