在vue.js方法中没有收到socket.io回调?

时间:2018-06-04 11:18:58

标签: vue.js callback socket.io

使用此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 :(得分:1)

您忘记在回调中指定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);
        });
    }