【发布时间】:2021-11-21 06:46:59
【问题描述】:
我不知道为什么我没有收到来自 model.publish() 的风帆模型的通知事件。 在 1.x 之前的sailsjs 中,类似的客户端代码已经工作了,当记录被创建、更新或删除时,我会得到每个事件。所以,我一定是误会了什么。
如何订阅来自 CRUD 操作的任何记录的所有事件?
在服务器端,我有 Job.js 和 JobController.js。
在 Job.js 模型中,这个测试只是每 10 秒创建一个新记录:
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 中,由客户端调用并开始测试滚动:
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操作成功,但是我从来没有看到一个事件:
...
<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('/job') 的事件吗?
【问题讨论】:
标签: socket.io sails.js sails.io.js