【问题标题】:sails.js socket lifetime. is unsubscription necessary?Sails.js 套接字生命周期。有必要退订吗?
【发布时间】: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 请求,即使只有一个当前套接字,帆也需要通知两个套接字那还活着吗?

【问题讨论】:

    标签: sockets sails.js lifetime


    【解决方案1】:

    所以经过一番调查,我打开了 config/sockets.js 并看到了 onConnectonDisconnect 函数。我添加了一些日志记录并确定页面刷新,无论如何套接字都会断开连接。因此,可以安全地假设取消订阅是不必要的

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      相关资源
      最近更新 更多