2017-10-16 26 views
0

我对Node.js比较新,并且遇到了一个奇怪的问题。我们一直在通过socket.emit和socket.on传递信息,直到这一点。我们有一种新形式,当用户提交时,发送他们的电子邮件的值,然后隐藏登录页面。数据正在发射,但无论出于什么原因,它都不会进入发射功能部分以隐藏登录页面。它甚至没有达到if(数据)部分。Node.js插座发射正在发射,但不会进入函数调用

$agentForm.submit(function(e){ 
    e.preventDefault(); 
    if(validateEmail($agentEmail.val()) && validatePW($pw.val())){ 
     socket.emit('new agent', $agentEmail.val(), function(data){ 
      if(data){ 
       $loginPage.hide(); 
      } 
     }); 
    } else{ 
     return; 
    } 
}); 

值被发射并抓住了服务器上,所以不能确定为什么它不会功能(数据)往里走。如果需要更多信息,我可以提供。任何帮助,你可以提供表示赞赏。谢谢!

回答

0

您的服务器是否正在接收连接调用回调函数?好像你正在使用socket.io,这是一个片段,如果客户端运行并且连接没有建立,或者回调函数没有被调用,它就不会进入响应处理程序。

server.js

const io = require('socket.io')({ 
    path: '/test', 
    serveClient: false 
}); 

io.attach(3000, { 
    pingInterval: 10000, 
    pingTimeout: 5000, 
    cookie: false 
}); 

io.on('connection', function (socket) { 
    console.log('client connected') 
    socket.on('foo', function (data, callback) { 
    console.log(data); 
    callback('received ' + data); // IMPORTANT must invoke callback 
    }); 
}); 

client.js

const io = require('socket.io-client'); 

const socket = io('http://localhost:3000', { 
    path: '/test' 
}); 

socket.emit('foo', 'bar', function (response) { 
    console.log("response:") 
    console.log(response); 
}); 
+0

哇,这是它的代码只需一行失踪。非常感谢,它实际上在那里,但在测试过程中被删除。 –