Swift socket.io .emit()不会触发 [英] Swift socket.io .emit() doesn't fire

查看:80
本文介绍了Swift socket.io .emit()不会触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是套接字的新手,但是我遇到以下问题,我使用这个库将我的应用程序连接到我的nodejs服务器.我想知道为什么我不能通过以下方式调用socket.emit():

I'm new to sockets and i'm stuck with the following problem, i use this library to connect my app to my nodejs server. I'd like to know why if i call socket.emit() in the following way doesn't work:

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

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

滑动socket.emit和socket.connect函数都不起作用,但是如果我通过单击按钮触发socket.emit函数,则它起作用:

It doesn't work neither swiping socket.emit and socket.connect functions but if I trigger the socket.emit function by clicking a button it works:

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

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

我想我在这里想念一些东西,如果有人可以向我解释一下,那就太好了

I think i'm missing something here, it would be great is someone could explain this to me

推荐答案

套接字在发出调用之前需要建立连接.您可能应该等到建立连接后再发射.试试这个:

Sockets require a connection before emit is called. You should probably wait until there is a connection before u emit. Try this:

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()
}

这篇关于Swift socket.io .emit()不会触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆