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