2016-09-07 8 views
2

ギャラクシーでホストされている通常のMeteor Webサイト/アプリケーションを持っていて、別のサーバーでホストされている管理サイトがありますが、は両方とも同じデータベース同じデータベースを共有する別のサーバーでMeteorメソッド呼び出しをトリガーする

私の通常のサイトのユーザーに、リモートから管理サーバーの(または任意の手順)メソッド呼び出しをトリガーすることができます。

ダミーのユーザーが管理サーバーの右側のページにログインしていた場合、「彼」が購読しているコレクションの変更をリッスンするため、これを行うことができると私は考えています。異なるサーバー上の実際のユーザーがそのコレクション内の何かを変更すると、ダミーユーザーはそれを見て、それがメソッド呼び出しをトリガーする可能性があります。

ここで、ダミーユーザーの手順をスキップし、管理サーバーから直接変更をリッスンする方法が必要です。

誰でも私を正しい方向へ導くことができますか?

+0

達成しようとしていることを説明できますか?なぜあなたは、単に関連するデータベースの変更を聞いて、それが何をしようとしているかを行うサーバー起動時にプロシージャ/ワーカーを実行するのではなく、メソッド呼び出しを「トリガ」することを選択しますか? – MasterAM

+0

それは私がやる方法を知りたいことです。 – Yeats

+0

OK。ユースケースについて説明できますか?私はあなたが達成しようとしていることを正確に理解していません。 – MasterAM

答えて

2

いくつかのコードで私のコメントをOPに広げてください。あなたには、いくつかの流星メソッドにアクセスしたいのですがどこ

まず、その後など、あなたが作成したサーバーにthis packageを追加します。

// server1.js 
Meteor.methods({ 
    foo: function(bar) { 
     check(bar, Whatever) 
     ... do some stuff ... 

     return fooBar 
    } 
}) 

HTTP.methods({ 
    '/foo/:bar': function() { 
     return JSON.stringify(Meteor.call("foo", this.params.bar), null, '\t') 
    } 
}); 

を最後に、あなたがアクセスしたいのですが、他のサーバー上最初のサーバー:これは管理コードのみそのサーバー上で、別のサーバから実行する管理操作を持っているしたいの問題であるように

// server2.js 
// somewhere on your server (startup, a method, etc.) 
try { 
    var bar = ... 
    var result = HTTP.call(
     "GET", "http://yourFirstServer.com/foo/" + bar 
    ) 
} catch (e) { 
    // Got a network error, time-out or HTTP error in the 400 or 500 range. 
    console.log(e) 
} 
+0

httpメソッドはどのように呼び出すのですか?ドキュメントは言いません。 – Yeats

+0

これは単なるルートです。基本的にREST APIです。あなたはserver2.jsに含まれているコードでアクセスします。 – Adam

+0

ああ、そうです。私は、どのサーバがどちらだったのか混乱していました。 – Yeats

0

のコメントからは、それが見えます。

これが本当に必要な場合は、私が考えることができる最も簡単な方法は、他のサーバー上の流星アプリの別のインスタンスを実行することですが、 '拡張'バージョンを使用し、サーバー(おそらくadmin.yourdomain.comと呼ばれます)。 サーバーを元のmongodbにポイントすることはできます(MONGO_URLを適切に設定することによって)。

+0

これがどのような問題を解決するかは不明です。管理サーバー上のクライアントサーバーのコードは必要ありません。彼らは「似ている」という理由だけでお互いに話をしません。 – Yeats

+0

お詫び申し上げます、私はちょうどあなたの元の記事を読んで、それははるかに理にかなっています。 @アダムによって提供された答えは、私に行く正しい方法のように見えます。 –

関連する問題