我使用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