我正在尝试使用回调进行发射,但似乎服务器无法将回调函数识别为函数。我查阅了文档,据我所知,代码应该可以工作。
这是我得到的错误: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);
});
感谢任何帮助。
答案 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});
});
那是因为回调没有像一个对象那样定义,所以您可以像定义一个对象一样。