Обратный вызов socket.io не получен в методе vue.js? - PullRequest
0 голосов
/ 04 июня 2018

Использование этого метода vue.js для входа в систему пользователей:

   loginUser: function () {
        socket.emit('loginUser', {
            email: this.email ,
            password: this.password         
        }, function() {
            console.log('rooms in callback are:', rooms);
        });
    }

На сервере событие loginUser обрабатывается:

socket.on('loginUser', (newuser,callback)=> {
  var body = _.pick(newuser, ['email', 'password']);
  console.log('body is:', body);
      User.findByCredentials(body.email, body.password).then((user) => {
        return user.generateAuthToken().then((token) => {

           if (token) {
                    console.log('token was found');
                     let rooms = ['Cats', 'Dogs', 'Birds'];
                    callback(rooms);

            } else {
               socket.emit('loginFailure', {'msg' : 'Login failure'});
            }
        }).catch((e) => {
          throw e;
        });
      }).catch((e) => {
           socket.emit('loginFailure', {'msg' : 'Login failure'});
           throw e;

      });
});

Я вижу 'token was found' напечатанов консоли, но не получает комнаты, печатаемые в консоли браузера.Я тоже не получаю ошибок.

Мне интересно, связано ли это с тем, как работают методы vue.js?И если да, то есть ли способ обойти это?

1 Ответ

0 голосов
/ 04 июня 2018

Вы забыли указать rooms в качестве аргумента в обратном вызове

loginUser: function () {
        socket.emit('loginUser', {
            email: this.email ,
            password: this.password         
        }, function(rooms) { // need to have rooms argument
            console.log('rooms in callback are:', rooms);
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...