У меня есть приложение AngularJS, которое я пытался просто запустить сокет при создании/удалении элементов в моей БД. Я переключился с использования ресурса $ на io.socket.post() с помощью настраиваемого метода контроллера ('socketCreate'), однако не знаю, почему ни один из моих обратных вызовов сокета не запускается.Sails.js IO.socket не работает
Sails JS console регистрирует нового пользователя, новый пользователь создан, а угловой возвращает данные из сокета и обновляет список. Все это работает правильно, однако обратный вызов io.socket.on не срабатывает.
Неужели я не получаю событие? Правильно?
Угловая Контроллер:
$scope.newUser = function() {
io.socket.post('/users/socketCreate', {name: $scope.temp_user.name}, function(data, jwres) {
$scope.refreshUsers();
$scope.temp_user = {};
});
};
if(!io.socket.newUserListen) {
io.socket.newUserListen = true;
console.log(io.socket.newUserListen);
io.socket.on('users', function onServerSentEvent(msg) {
console.log('users', msg);
});
io.socket.on('user', function onServerSentEvent(msg) {
console.log('user', msg);
});
}
Sails Контроллер:
module.exports = {
socketCreate: function(req, res) {
var newName = req.param('name');
if(newName && req.isSocket) {
Users.create({ name: newName }).exec(function created(err, newGuy){
Users.publishCreate({
id:newGuy.id,
name: newGuy.name
});
console.log('User Created...');
res.ok(newGuy);
})
} else if(req.isSocket) {
Users.watch(req);
} else {
console.log(newName, req.isSocket);
}
}
}
Это хорошо работало. Вместо использования моей фабрики AngularJS, которую я создал для конечной точки пользователя, в итоге я использовал io.socket.get, данные обратного вызова, которые были равны моим $ scope.users. Мне нужно было запустить $ scope. $ Apply(); хотя, чтобы получить представление для обновления, но теперь работает в нескольких браузерах (добавление и удаление данных) –
Отличный ... хороший вызов в $ scope. $ apply(). – JohnGalt