Node.js套接字发出正在发出,但不进入函数调用

时间:2017-10-16 21:16:02

标签: javascript node.js sockets

我对Node.js比较陌生,遇到了一个奇怪的问题。我们一直在通过socket.emit和socket.on传递信息,直到这一点。我们有一个新表单,当用户提交时,使用其电子邮件的值发出,然后隐藏登录页面。数据正在被发出,但无论出于何种原因,它都不会进入emit的函数部分以隐藏登录页面。它甚至没有到达if(数据)段。

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

正在发送和捕获服务器上的值,因此不确定为什么它不会进入函数(数据)。如果需要更多信息我可以提供。您可以提供的任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分: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);
});