【发布时间】:2015-01-27 14:25:00
【问题描述】:
我的sails 应用程序返回大部分呈现的视图。我没有使用任何客户端前端 js 框架,因此返回 JSON 或 XML 是没有意义的。在我看来,我有这个js。
io.socket.get
(
location.pathname,
function(model)
{
if(typeof model !== 'undefined' && typeof model.error === 'undefined' && model !== null && model)
{
io.socket.on
(
model,
function(event)
{
console.log(event);
}
);
}
}
);
我的控制器没有严格映射到模型。这是一种意大利面条编码,但我不知道该怎么做。餐厅包含销售点机器 (POS)。在我的餐厅控制器中,我有
detail: function(req, res)
{
Restaurant.findOne
(
{
where:
{
owner: req.session.owner.id,
id: req.params.id
}
}
)
.populate('POSs')
.exec
(
function(err, restaurant)
{
if(err)
{
res.serverError(err);
}
else if(typeof restaurant === 'undefined')
{
res.notFound();
}
else
{
Restaurant.count
(
{
owner: req.session.owner.id
}
)
.exec
(
function(err, num)
{
console.log(req.socket.id);
if(req.isSocket)
{
POS.subscribe(req.socket, restaurant.POSs);
res.send('pos');
}
else
{
res.view({restaurant: restaurant, count: num});
}
}
);
}
}
);
}
现在的问题是我需要退订吗?如果我离开该页面,看来我将拥有不同的套接字 ID。服务器是否仍会认为旧套接字仍被订阅并将消息推送到该旧套接字?即,如果我转到触发餐厅控制器中“详细”路径的路径,刷新并执行从另一个控制器触发 POS.publishUpdate(pos.id, {status: pos.status}); 的 ajax 请求,即使只有一个当前套接字,帆也需要通知两个套接字那还活着吗?
【问题讨论】: