Usando .emit desde POST
¿Hay alguna forma de emitir a la corriente?socket
dentro de un método post denode.js utilizandosocket.io yexprimir sin tener que pasar por elio.sockets.on('connection')
?
Aquí está mi problema. Estoy haciendo un mini sistema de autorización. Cuando el usuario envía desde el formulario, publica los datos a través de'/login'
en lugar de usar unonclick
emitir. Si el usuario tiene un nombre de usuario o una contraseña no válidos, debe enviar un mensaje de vuelta notificando que falló. Preferiría no usar la devolución de llamada o escribir porque estoy usando unJade modelo. Puedes ver mi código fuenteaquí.
Ejemplo: Lado del servidor
var LoggIn = require('./lib/login.js'); // <-- Middle-ware
app.post('/login', function (req, res){
LoggIn.authenticate(req.body.user, req.body.password, function(user, msg) {
if (user) {
req.session.user = user;
res.redirect('/');
} else {
res.render('login');
//res.emit('loginFail', 'You have entered an invalid user / password!<br>Try Again.); // <-- wishing for something like this
console.log('Login Failed! : ' + msg);
}
});
});
Ejemplo Lado del cliente
JS
var status = document.getElementById('status');
socket.on('loginFail', function(msg) {
status.innerHTML = msg;
});
Forma de jade
#status
form#loginForm(method='POST', action='/login')
input(name='user', placeholder='User Name')
br
input(name='password', placeholder='Password', type='password')
br
input(value='Sign In', type='submit')