客户端正在尝试使用Socket.io获取数据,但似乎无法连接

时间:2016-04-14 18:00:42

标签: node.js sockets reactjs socket.io

我已经在我的客户端和服务器上设置了套接字,但我似乎无法将我的数据放入我的客户端。它们似乎正在正确连接,我无法获得任何数据。也没有错误消息。

这是我的服务器代码:

io.on('connection', function (socket) {

  console.log('a user connected');

  socket.on('custom-message', function () {
    console.log("Hitting messages socket");
    Message.find(function(err, messages){
      if(err){
        socket.emit('custom-message', err)
      } else {
        socket.emit('custom-message', messages);
      }
    })
  });

});

这是客户端中连接到套接字的函数:

  loadMessagesFromServer: function(){
    console.log("About to load messages")
    socket.on('custom-message', function(msg){
      console.log("connected in client", msg)
    });
  },

就像我说这是一个非常简单的例子,我似乎无法在loadMessagesFromServer中获取数据..并且没有错误,我调试的唯一方法就是尝试不同的东西..

1 个答案:

答案 0 :(得分:0)

您正在聆听活动messages。所以你需要发出不是socket.emit('messages: err', err)的同一事件。试试socket.emit("messages", error)。此外,在服务器端代码中,首先需要接收message事件,然后套接字才会发出消息。删除socket.on(custom-messages)。你为什么需要它?

服务器端代码

io.on('connection', function (socket) {
/* Here a client connection is established. The on("connection") 
*  event will be triggered as many times as`io.connect("the-uri")`
*  is triggered (and succeeded) in the client`
*/

// Listening for the post event
   socket.on("post", function(messages){
       console.log("client posted data:", messages)       

      // Find messages and emit result
       Message.find(function(err, messages){
         if(err){
           socket.emit('error', err)
         } else {
           socket.emit("message", messages);
         }
       });

    });
});

客户端代码

registerOnMessageFromServerListener: function(){
    socket.on("message", function(msg){
    console.log("received message:", msg);
});

registerOnErrorFromServerListener: function(){
    socket.on("error", function(error){
    console.log("an error occured:", error);
});

registerOnMessageFromServerListener();
registerOnErrorFromServerListener();
socket.emit("post", "a-message");

还要确保在建立套接字连接之前调用loadMessagesFromServer