首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sails.js sails.io.js,blueprints没有从.publish()获取事件,如何订阅所有事件?

Sails.js sails.io.js,blueprints没有从.publish()获取事件,如何订阅所有事件?
EN

Stack Overflow用户
提问于 2021-09-29 10:57:32
回答 1查看 31关注 0票数 0

我不知道为什么我不能从model.publish()中获得sails模型的通知事件。在1.x之前的sailsjs中,类似的客户端代码已经起作用了,当记录被创建、更新或删除时,我会得到每个事件。所以,我一定是误解了什么。

如何订阅CRUD操作中任何记录的所有事件?

在服务器端,我有Job.js和JobController.js。

在Job.js模型中,此测试仅每10秒创建一条新记录:

代码语言:javascript
复制
test: async function(dataset) {
    let count = 0;
    setInterval(async function() {
        count++;
        let newjob = {
            dataset: dataset,
            state: 'delayed',
            name: "job name "+count
        };
        
        let job = await Job.create(newjob).fetch()
        sails.log.info('created test job: ',JSON.stringify(job));
        Job.publish([job.id],job);

    },10000);

}

在JobController.js中,由客户端调用并启动测试滚动:

代码语言:javascript
复制
submittest: async function(req,res) {

    let dataset = await Dataset.Get({});
    await Job.test(dataset[0].id);

    return res.ok({status:'ok'});
}

在客户端test.html中,io.socket.get操作是成功的,但我从未看到事件:

代码语言:javascript
复制
...
<script>
io.socket.get('/job', function(body, JWR) {

  console.log('and with status code: ', JWR.statusCode);

  setTimeout(function() {
    io.socket.get('/job/submittest', function (body,JWR) {

      io.socket.on('job', function(msg) {
        console.log("job event",msg);  // not getting here.  why?
      });

    });
  },2000)

});
</script>

这一切都运行得很好,但问题是,客户端看不到任何事件。为什么?我是否没有订阅具有初始作业(‘/io.socket.get’)的事件?

EN

回答 1

Stack Overflow用户

发布于 2021-10-10 18:05:22

本质上,这里发生的情况是,你对着一个空盒子大喊模型中的新记录,但没有人在那个空盒子里听你说话。

换句话说,您需要订阅模型更新的套接字连接。

请参阅:https://sailsjs.com/documentation/reference/web-sockets/resourceful-pub-sub/subscribe

此外,还可以查看this question的答案,以快速了解如何操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69375061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档