【问题标题】:Cant listen for server events using publishUpdate with sails js无法使用带有sails js的publishUpdate监听服务器事件
【发布时间】:2015-07-09 12:29:00
【问题描述】:

我试图从服务器发布更新一些数据以监听用户/配置文件的创建,但我无法使用 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?             
  });
};

【问题讨论】:

  • 你确定不是“个人资料”吗?
  • 不确定你的意思是什么?

标签: angularjs websocket socket.io sails.js


【解决方案1】:

我认为您的模型缺少“订阅”...例如

Profile.subscribe(req.socket, data);

并通过 GET 链接到您的应用。

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

【讨论】:

    【解决方案2】:

    尝试将其更改为大写 P:

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

    【讨论】:

    • 不相关。两种情况都一样
    • 两种情况都一样吗?我不知道你的意思。 publishUpdate 将模型名称作为事件发出。型号名称是 Profile,而不是 Profile。它发出哪一个?
    • 好吧,我就是这么问的。
    • 您已确认 saveUser 正在触发?
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2014-04-09
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多