有没有办法在两个Meteor服务器之间发送事件?我知道我可以使用DDP.connect将Server1连接到Server2(反之亦然),只需在两个服务器之间调用方法即可。这对我来说不起作用,因为我的一台服务器(Server1)将在我的家后面的动态IP和防火墙。 DDP.connect需要一个网址。在两台服务器之间进行通信的最佳方式是什么?我认为这样做的唯一方法就是Socket.io,其中Server1连接到Server2。我不确定这是否可以在Meteor中完成。感谢。
答案 0 :(得分:2)
您可以使用DDP.connect在启动时将服务器1连接到服务器2,然后订阅服务器2发布的集合,例如:
在服务器2(已知URL)上:
var Events = new Meteor.Collection("events");
Meteor.publish("events", function () {
return Events.find({});
}
在服务器1上(在你家):
var EventConnection = DDP.connect("<server 2 URL>");
var Events = new Meteor.Collection("events", {connection: EventConnection});
EventConnection.subscribe("events");
Events.find({}).observe({
added: function (newEvent) {
// do something with newEvent
}
});
然后,只要服务器2将对象添加到Events集合,您就可以通过连接在服务器1上获取它。但请注意 - 每次服务器1连接到服务器2时,它也将获得所有先前的事件。如果您不希望这种情况发生,您需要在订阅上使用就绪回调:
服务器1的修订代码:
var EventConnection = DDP.connect("<server 2 URL>");
var Events = new Meteor.Collection("events", {connection: EventConnection});
EventConnection.subscribe("events", function () {
Events.find({}).observe({
added: function (newEvent) {
// do something with newEvent
}
});
});