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) クライアント側では、バックボーン JS を使用しています。したがって、新しいメッセージが追加されたら、バックボーンで .fetch() メソッドを呼び出してすべてのメッセージを取得する必要があります。

私は Socket.IO に比較的慣れていないので、それらのいくつかはばかげているように聞こえるかもしれません。

4

1 に答える 1

1

私の観点からするmongodbexpress、チャット アプリケーションには大きな目的がなく、socket.io代わりにすべての負担が伴います。

最初に、アプローチ全体を再構築することを検討する必要があります。クリーンな結果を得るには、次のことを試してください。

  • /loginmongodbを使用してユーザーを認証できるように、単純な単一ルートを使用してユーザーをログインさせます

  • backend への接続を確立するにsocket.ioは、接続を処理するスクリプトを提供してみてください

  • Backbone を使用しているため、HTTP リクエストの代わりにBackbone.iobindsyncを使用するオーバーライドを使用してみてください。socket.io

  • 最後にsocket.io、expressjsサーバーに接続されているサーバーが残りを処理する必要があります

    1. Expressjs セッションを使用して認証する必要があります
    2. 接続とメッセージを処理する必要があります
    3. .room機能が組み込まれてsocket.ioいるため、mongoDB と expressjs を使用する理由はありません。

要約すると、使用資格情報をデータベースに保存する場合は、expressjs をスキップして、socket.io、http サーバー、および mongodbを使用できます。

于 2013-11-01T21:39:58.933 に答える