Socket.io没有得到回叫和数据

时间:2018-04-20 22:15:12

标签: socket.io

当使用套接字时,我可以从我的客户端进行回调,如果我只指定回调。但是如果我添加数据。数据将出现,但我的回调将是未定义的!

我误解了什么?

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");    
      }
});

1 个答案:

答案 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)

这应该有效。