gpt4 book ai didi

sails.js - publishCreate - 消息未广播

转载 作者:行者123 更新时间:2023-12-04 02:45:08 25 4
gpt4 key购买 nike

我停留在 publishCreate 消息广播上,不知道我做错了什么。

创建了一个名为 Sample 的简单模型:

module.exports = {
attributes: {
device: 'string',
value: 'float'
},

afterCreate: function(sample, next) {
console.log("afterCreate called");
Sample.publishCreate({value: sample.value});
console.log("publishCreate sent");
next();
}
};

在文档中没有找到模型是否自动发布创建,所以我添加了 afterCreate。

然后我创建了以下 View :

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/styles/iphone.css">
<!-- Bring in the socket.io client -->
<script type="text/javascript" src="/js/socket.io.js"></script>
<!-- then beef it up with some convenience logic for talking to Sails.js -->
<script type="text/javascript" src="/js/sails.io.js"></script>
<!-- listen on socket.io for incoming messages -->
<script type="text/javascript" src="/js/app.js"></script>
<script type="text/javascript">
socket.on('message', function(msg){
alert('message received');
});
</script>
</head>
<body>
<div class="block" style="height: 320px;">
<div class="centered">
<h1><%= temp %>°</h1>
</div>
</div>
</body>
</html>

理论上,现在如果我在浏览器中调用 View ,然后在我调用的其他浏览器选项卡中调用

http://localhost:1337/sample/create?device=AA&value=10.0

在上面的 View 中,客户端应该会收到一条消息,但什么也没有发生。

我从消息中知道套接字已连接,并且在创建新样本时调用了 publishCreate。

可能是什么原因?调用 res.view() 时是否还必须在 Controller 中执行某些操作?

最佳答案

您是否在 Controller 的创建操作中明确声明了您的 publishCreate?

'create': function(req,res,next){
Sample.create(req.params.all(), function sampleCreated(err,sample){
if(err){console.log(err); }
Sample.publishCreate({
id:sample.id,
device: sample.device,
value: sample.value
});
});
},

您可能应该明确声明要发布的数据点。在这里,我设置了要显式发布的 Id、设备和值。蓝图和自动 Controller 映射很有用,但有时它可能真的不稳定和不可靠,尤其是在缺乏文档的情况下。最好具体一点。

关于sails.js - publishCreate - 消息未广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com