2016-06-30 22 views
1

nodejsを使用しているサイトでチャットインターフェイスを設定しようとしています。 ユーザーが認証された後、logged_in_userリストを更新する必要があります。 あなたがupdatechatイベントがトリガされた「接続」イベントで見ることができるように私が参照サーバからクライアントへのログインイベントの送信

https://github.com/amirrajan/nodejs-chat

io.sockets.on('connection', (socket) => { 
    socket.on('sendchat', (data) => { 
    io.sockets.emit('updatechat', socket.username, data); 
    }); 

として、このコードを使用しています。 クライアント側(public/app.js)では、チャットリストがupdatechatイベントの取得時に更新されます。

同じことをする必要がありますが、クライアントが認証された後です。 は、私は何とかこれは私が別のポートにログインユーザーをリダイレクトし、ソケット」を使用しようとしました

app.get('/authenticate',function(request,response) 
       { 
       var db = couch.db.use('users'); 
       var email = request.query['email']; 
       var pass = request.query['password']; 
       db.get(email,{email:email},function(err,body){ 
           if(err) 
           console.log(err); 
           else 
           { 

           var user_pass = body['password']; 
           var name = body['name']; 
           console.log(user_pass); 
           if(pass == user_pass) 
           { 

       eventEmitter.emit('login',name); 
       response.render('pages/dashboard',{user:body['name']}); 
           } 
       } 
       }); 

// And on 'login' event 
eventEmitter.on('login', function(name) 
       { 

       // ?????? Broadcast the new user to all logged in users to update the chatlist 
       }); 

私のコードです

「ログイン」イベントにイベントをトリガーするためにソケットオブジェクトを微調整することができますそこには「接続」というイベントがあります。それは仕事のようなものですが、別のアプローチがあるかどうかを知りたいのです。

+0

どのように認証しますか? Ajaxや通常のフル・ページ・ロードを使用していますか? – Molda

答えて

0

認証にはsocket.ioミドルウェアを使用する必要があります。

io.use(function(socket,next){ 
     //auth here 
    }); 

あなたはミドルウェアに渡されるソケットオブジェクトからREQとRESのオブジェクトを取得することができますドキュメントhttp://socket.io/docs/server-api/

を見てみましょう。

urlはpass sslではないため、クエリにパスワードを渡すことはお勧めできません。

+0

ありがとうございました。それはうまくいっています。私は認証にパスポートを使用します。 – Solo

+0

これを正解としてマークできますか? –

関連する問題