如何在应用程序path中使用socket.io

我用nodejs开发了我的第一个项目。 我使用express 3作为框架和客户端服务器通信的socket.io 。 目前我正在创build一个registry格。 它工作得很好,但我不知道如何使用socket.io并正确地一起express

我检查电子邮件和密码是否有效,如果不是,我想推送一个json对象的客户端。

我使用这个应用程序路线:

 app.post('/user', function (req, res) { var user = new User(req.body.user), errors; function userSaveFailed() { res.render('index'); } errors = user.validation(req.body.user.confirm); user.save(errors, function (err) { if (err) { // Here I would like to send the Object to the client. io.sockets.on('connection', function (socket) { socket.emit('registration', { errors : errors }); }); return userSaveFailed(); } res.render('user/new.jade'); }); }); 

那么,客户端获取json对象,但如果另一个客户端连接到'/'他也获得了该对象。 我想我使用socket.io错了。 在应用程序path中使用.emit()的常用方法是什么? 是否有必要使用socket.io的全局授权,并express为这个testing?

一种方法是(如果你真的想用socket.io来回复post,你可能不应该这样做),就是每个用户会话使用一个房间。

所以关于on("connection", ...)做这样的事情:

socket.join(room)房间是会话唯一的东西(例如会话ID)。

然后发送回只有一个用户:

socketio.of('/')['in'](room).emit(...); ,房间是上面使用的同一个唯一的ID。