2016-06-30 5 views
1

Я пытаюсь настроить интерфейс чата на сайте с помощью nodejs. Мне нужно обновить список logged_in_user после аутентификации пользователя. Я использую этот код в качестве ссылкиОтправка события входа от сервера к клиенту

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

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

Как вы можете видеть на «соединение» событие событие updatechat срабатывает. На стороне клиента (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 
       }); 

Я попытался перенаправить зарегистрированных пользователей на другой порт и использовать гнездо " connection ". Такие работы, но я хочу знать, есть ли другой подход, который я мог бы использовать.

+0

Как вы проверяете подлинность? Использование Ajax или нормальной загрузки полной страницы? – Molda

ответ

0

Для проверки подлинности необходимо использовать промежуточное программное обеспечение socket.io.

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

Посмотрите на документы http://socket.io/docs/server-api/

Вы можете получить REQ и Рез объекты из объекта сокета передаются ППО.

Обратите внимание, что не рекомендуется передавать пароль по запросу, поскольку URL-адрес не передается ssl.

+0

Спасибо .. Он работал и да, я буду использовать паспорт для аутентификации .. – Solo

+0

Можете ли вы отметить это как правильный ответ? –

Смежные вопросы