0

我正在用流星玩实时白板。我的第一次尝试效果很好,如果您打开 2 个浏览器并在其中一个中绘制,另一个会在几毫秒内更新(http://pen.meteor.com/stackoverflow

现在,我的第二个项目是制作无限实时白板。现在主要的变化是所有的行都按区域分组,查看者只订阅可见区域中的行。现在有 5 秒 (!) 当您在一个浏览器中执行某项操作以查看它在另一个浏览器中发生时 ( http://carve.meteor.com/love )。

我尝试在 mongo 数据库中为确定区域的字段添加索引。我尝试只为整行更新集合(而不是每次像我的第一个项目一样推送一个新点)。在滚动或缩放看板时,我尝试添加超时以不经常订阅。

没有任何变化,总是延迟 5 秒。

我在本地工作时没有这种延迟。

这是负责订阅可见区域行的代码:

subscribeTimeout=false;

Deps.autorun(function () {
    var vT=Session.get("visible_tiles");
    var board_key=Session.get("board_key");
    if (subscribeTimeout) Meteor.clearTimeout(subscribeTimeout);
    subscribeTimeout=Meteor.setTimeout(subscribeLines, 500);
});
function subscribeLines() {
    subscribeTimeout=false;
    var vT=Session.get("visible_tiles");
    console.log("SUBSCRIBE");
    Meteor.subscribe("board_lines", Session.get("board_key"),vT.left,vT.right,vT.top,vT.bottom, function() {
        console.log("subscribe board_lines "+Session.get("board_key"));
    });
}
4

1 回答 1

1

我担任系统管理员已有 15 年了。如果不运行代码,这听起来像是meteor.com 服务器的强加限制。他们可能会延迟资源,以便每个人都能获得公平的份额。我会发布到另一台服务器(如 heroku)以便轻松部署或手动发布到另一台服务器(如 linode 或我最喜欢的 Joyent)。或者,您可以尝试直接联系meteor.com,询问他们是否/如何限制资源使用。

由于代码在本地快速/即时运行,您应该会看到来自良好网络的良好服务器的亚秒级响应时间。

于 2013-06-03T17:54:29.260 回答