当使用套接字时,我可以从我的客户端进行回调,如果我只指定回调。但是如果我添加数据。数据将出现,但我的回调将是未定义的!
我误解了什么?
class My Page extends React.Component { doStuff(data) { console.log(JSON.stringify(data)); } componentDidMount() { socket.emit("path",this.doStuff) socket.emit("path",this.doStuff, {"test":"yeah"}) } }
在服务器端我有
socket.on("path", function(callback,data)
{
if(data && data.test)
{
callback(data.test)
}
else
{
callback("No Data");
}
});
答案 0 :(得分:1)
请查看Socket.IO's documentation中的emit
函数 - 其签名如下:emit(eventName[, ...args][, ack])
表示它接受事件名称,参数和将在调用时调用的函数服务器回答了这个事件。
您需要做的是:
服务器:替换"path"
处理程序函数中参数的顺序,如下所示:socket.on("path", function(data, callback) { ... })
。
客户端:在调用emit
函数时替换参数的顺序,如下所示:socket.emit("path", {"test":"yeah"}, doStuff)
。
这应该有效。