0

我正在创建一个实时聊天室。然而,与许多其他可用示例不同的是,只有经过身份验证的用户才能访问单个聊天室,并使用基于邀请的身份验证与他们共享房间。

以下是步骤:

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)一旦添加到共享中,用户可以实时添加消息给房间内经过身份验证的用户。我们怎样才能做到这一点?

我正在尝试这个: app.post('/message', function(req,res,next){ // 在 Mongodb 中保存消息

//发出一个套接字函数 - 我们如何在 API 中初始化它?

}

3) 在客户端,我使用的是 Backbone JS。因此,一旦添加了新消息,我是否应该在主干上调用 .fetch() 方法来检索所有消息。

我对 Socket.IO 比较陌生,所以其中一些听起来可能很愚蠢。

4

1 回答 1

1

从我的角度来看,mongodbexpress没有在您的聊天应用程序中有很大的用途,socket.io而是承担了所有的负担。

首先你应该考虑重建整个方法,你应该尝试以下,以获得一个干净的结果。

  • 使用简单的单一路由来登录用户,例如,/login您可以使用 mongodb 对用户进行身份验证

  • 要建立与后端的连接socket.io,请尝试提供处理连接的脚本

  • 由于您使用 Backbone,请尝试使用sync覆盖,它使用socket.io而不是 http 请求Backbone.iobind

  • 现在终于socket.io连接到您的 expressjs 服务器的服务器应该处理其余的

    1. 它应该使用 expressjs 会话进行身份验证
    2. 它应该处理连接和消息
    3. 有一个.room内置的功能,socket.io所以没有理由使用 mongoDB 和 expressjs。

总结一下,如果您将使用凭据存储在数据库中,您可以跳过 expressjs 并使用 socket.io、http 服务器和 mongodb

于 2013-11-01T21:39:58.933 回答