使用带有iOS

时间:2018-06-11 08:28:46

标签: javascript ios swift socket.io

我正在尝试使用回调进行发射,但似乎服务器无法将回调函数识别为函数。我查阅了文档,据我所知,代码应该可以工作。

这是我得到的错误:TypeError: callBack is not a function

以下是客户端代码:

socket?.emitWithAck("connectUsername", username).timingOut(after: 2, callback: { (data) in
            
        print(data)
    })

服务器代码:

socket.on("connectUsername", function(username, callBack)
    {
        //Do stuff with username here...

        var id = socket.id
        callBack(id);
     });

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

我没有在文档中看到回调作为timingOut的参数。以下应该工作:

socket.emitWithAck("connectUsername", username).timingOut(after: 20) { data in 
  print(data)
}

如果上述方法不起作用,请将其更改为以下内容,以检查完全是什么:

socket.on("connectUsername", function(username, callBack)
    {
        //Do stuff with username here...

        var id = socket.id
        console.log(callBack.toString());
     });

答案 1 :(得分:2)

由于@kiddosrails提到的问题是2秒的超时时间比执行的时间少,您可以将超时时间设置为 0 ,即未超时。希望这个答案对您有帮助。

     socket.emitWithAck("connectUsername", username).timingOut(after: 0) {data in
      print(data)    
    }

答案 2 :(得分:0)

iOS代码

socket?.emitWithAck("connectUsername", data).timingOut(after: 0) {data in
            print(data) 
        }

服务器代码

var io = socketIO.listen(server);
io.sockets.on('connection', function(client){
    console.log('a user connected..!!!!!');
    client.on('connectUsername', function(username, callBack){
        var id = socket.id
        callback({
        ID:id,
        Message: "Successfully."
        });
    }
}

答案 3 :(得分:0)

在您的服务器代码中:

socket.on("connectUsername", function(username, callBack)
    {
        //Do stuff with username here...

        var id = socket.id
        callBack = ({id});
     });

那是因为回调没有像一个对象那样定义,所以您可以像定义一个对象一样。