我用nodejs
开发了我的第一个项目。我使用express 3
作为框架,使用socket.io
作为客户端服务器通信。目前我正在尝试创建一个注册表单。它工作得很好,但我不确定如何正确使用socket.io
和express
。
我检查电子邮件和密码是否有效,如果不是,我想将json对象推送给客户端。
我使用这个app路线:
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
错了。在应用路线中使用.emit()
的常用方法是什么?是否有必要对socket.io
和express
使用全局授权进行此测试?
答案 0 :(得分:1)
这样做的一种方法(如果你真的想使用socket.io来回复帖子,你可能不应该这样做),就是每个用户会话使用一个房间。
所以在on("connection", ...)
做类似的事情:
socket.join(room)
其中会议室是会话的唯一内容(例如会话ID)。
然后发回给一个用户:
socketio.of('/')['in'](room).emit(...);
,空间与上面使用的唯一ID相同。