相关疑难解决方法(0)

在服务器上调用Collection.insert时,"Meteor代码必须始终在Fiber中运行"

我在server/statusboard.js中有以下代码;

var require = __meteor_bootstrap__.require,
    request = require("request")   


function getServices(services) {
  services = [];
  request('http://some-server/vshell/index.php?type=services&mode=json', function (error, response, body) {
    var resJSON = JSON.parse(body);
     _.each(resJSON, function(data) {
       var host = data["host_name"];
       var service = data["service_description"];
       var hardState = data["last_hard_state"];
       var currState = data["current_state"];
       services+={host: host, service: service, hardState: hardState, currState: currState};
       Services.insert({host: host, service: service, hardState: hardState, currState: currState});
    });
  });
}

Meteor.startup(function () {
  var services = [];
  getServices(services);
  console.log(services);
});
Run Code Online (Sandbox Code Playgroud)

基本上,它从JSON提要中提取一些数据并尝试将其推送到集合中.

当我启动Meteor时,我得到以下异常;

app/packages/livedata/livedata_server.js:781
      throw exception;
            ^
Error: Meteor …
Run Code Online (Sandbox Code Playgroud)

javascript meteor node-fibers

38
推荐指数
3
解决办法
2万
查看次数

拿起meteor.js用户注销

当用户退出网站时,有什么方法可以提取吗?当他们这样做时,我需要做一些清理工作.使用内置的meteor.js用户帐户.

我将使用它进行一些验证,因此我需要一个不能代表客户端的其他用户触发的解决方案 - 最好是完全服务器端的东西.

javascript meteor

19
推荐指数
3
解决办法
7077
查看次数

如何在Meteor中存储特定于客户端的数据服务器端?

Express实现了一个服务器端会话对象,允许您存储特定于客户端的数据.你如何在Meteor中做同等效果的?

strack推荐使用一个集合.如果集合中的对象的id是在连接对象上公开服务器端和客户端的session_id,则这将起作用.

客户端和服务器似乎通过客户端上的LivedataConnection共享session_id:

if (typeof (msg.session) === "string") {
  var reconnected = (self.last_session_id === msg.session);
  self.last_session_id = msg.session;
}
Run Code Online (Sandbox Code Playgroud)

和服务器上的LivedataSession对象:

self.id = Meteor.uuid();
Run Code Online (Sandbox Code Playgroud)

但Meteor API不会公开这些对象.访问会话信息的正确方法是什么?

如果客户端的Session对象与可从Meteor#publish和Meteor#方法访问的客户端唯一的服务器端Session对象同步,那将非常方便.

javascript session meteor

16
推荐指数
3
解决办法
1万
查看次数

如何跟踪Meteor中匿名用户服务器端的数量?

我正在Meteor中编写一个数据敏感的应用程序,并试图限制客户端访问尽可能多的信息.因此,我想实现服务器端计算登录和匿名用户数量的方法.

我尝试了各种方法.第一个问题是在客户端断开连接后这个问题中的服务器清理,这表明挂钩:

this.session.socket.on("close")
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做,并试图更改集合时,它抛出了"Meteor代码必须始终在光纤内运行"错误.我认为这个问题是因为一旦套接字关闭,光纤就会被杀死,因此无法访问数据库.当在服务器上调用Collection.insert作为可能的解决方案时,OP指出这个"Meteor代码必须始终在光纤内运行",但我不确定这是否是最好的方法,基于对答案的评论.

然后我尝试自动运行变量:

Meteor.default_server.stream_server.all_sockets().length
Run Code Online (Sandbox Code Playgroud)

但是自动运行似乎永远不会被调用,所以我假设变量不是一个反应上下文,我不知道如何使它成为一个.

最后一个想法是做一个keepalive风格的东西,但这似乎完全违背了流星哲学,我想我只会用作绝对的最后手段.

我执行console.log了一些函数this.session.socket,并且唯一可能的其他函数是.on("data"),但是当套接字关闭时不会调用它.

我在这里有点亏,所以任何帮助都会很棒,谢谢.

javascript meteor

10
推荐指数
1
解决办法
2698
查看次数

Meteor客户端在服务器上断开事件

简单的问题,也许是简单的答案:如何在服务器上知道某个客户端已断开连接?基本用例:服务器需要知道玩家是否已断开连接.

javascript meteor

5
推荐指数
1
解决办法
2438
查看次数

标签 统计

javascript ×5

meteor ×5

node-fibers ×1

session ×1