无法使用带有sails js的publishUpdate侦听服务器事件

时间:2015-04-30 00:28:48

标签: angularjs websocket socket.io sails.js

我试图从服务器发布更新一些数据,以便监听用户/个人资料的创建,但我无法使用Angular在客户端中监听这些事件。这可能会遗漏一些东西吗?或者我可能做错了什么?

// UserController

saveUser: function(req, res) {
 User.create({name: req.param('name'), profile: {aboutMe: req.param('about'), gender: req.param('gender')}})
  .exec(function(err, user) {
    Profile
      .findOneById(user.profile)
      .exec(function(err, profile) {
       profile.user = user.id;
       profile.save(function(error, saved){
         if (error) return res.badRequest('Error.');  
         if (saved) res.json(saved);

         Profile.publishUpdate(saved.id, saved);
       });
     });
   });
}

// Client Angular

$scope.send = createUser;

listenProfile();

function createUser() {        
 var obj = {
   name: $scope.name,
   about: $scope.profile.about,
   gender: $scope.profile.gender

  User.create(obj).then(function(data) {
    console.log(data); // Data displayed correctly
  }, function(error) {
    console.log(error);
  });
}

function listenProfile() {
  io.socket.on('profile',function(data){
    console.log(data);  //Nothing happens?             
  });
};

2 个答案:

答案 0 :(得分:1)

尝试将其更改为大写P:

function listenProfile() {
  io.socket.on('Profile',function(data){
    console.log(data);  //Nothing happens?             
  });
};

答案 1 :(得分:0)

我认为缺少" sus"到您的模型......例如

Profile.subscribe(req.socket, data);

通过GET链接到您的应用。

io.socket.get("/profile",function(data){
        console.log(data);
    });