$ location.path('/ home')不使用socket.io

时间:2018-03-29 14:26:53

标签: angularjs socket.io

我使用express,node,angularJS作为我的堆栈,尝试将socket.io emit事件从服务器合并到客户端,我可以成功地做到这一点,当我有角度js控制器确实在相应的通道上收到消息我正在尝试导航到例如$ location.path('/ home')但它不工作也没有抛出错误。

服务器端发出代码:

app.get('/api/students/id', asyncMiddleware(async (req, res, next) => {
   const studentData = await getStudent(req.query.studentId);
   io.on('connection', function(socket){
      socket.emit('studentdata', {data: 'payload'});
   });
   res.json(studentData);
}));

客户端代码:

$scope.getStudent = function(){
    var studentData = $scope.Student;
    promise = StudentFactory.get(studentData.id);
    promise.then(function(data){
      var socket = io();
      socket.on('studentdata', function(data){
        if(data){
           console.log('navigating to home.’);
           $location.url('/home’);
        }
  });
  $scope.queriedStudent = data;
  }, function(error){
    console.error('Error - ', error);
    });
};

我可以在我的浏览器日志中看到'导航到主页'但之后没有发生任何事情,是因为socket.io正在通信的通道,$ location.path使用相同的通道因此无法导航? socket.io阻止$ location.path

0 个答案:

没有答案