我正在创建一个实时聊天室。但是,与许多其他可用示例不同,只有经过身份验证的用户才能访问单个聊天室,并使用基于邀请的身份验证与其共享会议室。
以下是步骤:
1)在邀请时添加用户:
app.post('/shared', function(req, res){
Room.findOne({_id: req.body._id}. function(err,room){
new_shared = new Shared({room_id: req.body._id, user_id, req.body.user_id});
new_shared.save();
room.shared.push(new_shared);
room.save();
res.send(new_shared);
});
});
2)一旦添加到Shared,用户就可以实时地将消息添加到房间中经过身份验证的用户。我们怎样才能做到这一点?
我正在尝试这个: app.post('/ message',function(req,res,next){ //在Mongodb中保存消息
// 发出套接字函数 - 我们如何在API中初始化它?
}
3)在客户端,我使用的是Backbone JS。因此,一旦添加了新消息,我应该在主干上调用.fetch()方法来检索所有消息。
我对Socket.IO来说比较新,所以其中一些可能听起来很愚蠢。
答案 0 :(得分:1)
从我的角度来看,mongodb
和express
在您的聊天应用中并没有很大的用途,socket.io
会带来所有负担。
首先你应该考虑重建整个方法,你应该尝试以下方法,以获得干净的结果。
使用简单的单一路由登录/login
等用户,以便您可以使用mongodb对用户进行身份验证
建立与后端socket.io
的连接,尝试提供处理连接的脚本
由于您使用的是Backbone,请尝试使用sync
覆盖,使用socket.io
代替http请求Backbone.iobind
现在终于连接到您的expressjs服务器的socket.io
服务器应该处理其余的
.room
socket.io
功能,因此没有理由使用mongoDB和expressjs。总结一下,如果在数据库中存储使用凭证,则可以跳过expressjs并使用socket.io,http服务器和mongodb