gpt4 book ai didi

node.js - 如何在应用程序路由中使用socket.io

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:59 24 4
gpt4 key购买 nike

我使用 nodejs 开发了我的第一个项目。我使用 express 3 作为框架,使用 socket.io 进行客户端服务器通信。目前我正在尝试创建一个注册表单。它工作得很好,但我不确定如何正确使用 socket.ioexpress

我检查电子邮件和密码是否有效,如果无效,我想向客户端推送一个 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 错误。在应用程序路由中使用 .emit() 的常见方法是什么?此测试是否需要使用 socket.ioexpress 的全局授权?

最佳答案

实现此目的的一种方法(如果您确实想使用 socket.io 回复帖子,但您可能不应该这么做),就是每个用户 session 使用一个房间。

因此在 on("connection", ...) 上执行如下操作:

socket.join(room) 其中 room 是 session 特有的内容(例如 session ID)。

然后只发送回一个用户:

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

关于node.js - 如何在应用程序路由中使用socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com