我的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请求,即使只有一个套接字,风帆也需要通知两个套接字还活着的当前套接字?
答案 0 :(得分:0)
经过一番调查后,我打开了config / sockets.js,看到了onConnect
和onDisconnect
函数。我添加了一些日志记录并确定页面刷新,套接字无论如何都会断开连接。因此,可以安全地假设不需要取消订阅