如何在应用程序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。