10

Docker 化されたサービス ベースのアプリケーションを作成しています。一部のサービスは meteor で記述されますが、そうでないものもあります。

サービスの 1 つは、ユーザーがプラットフォームに登録できる登録サービスです。

マイクロサービスを行うときは、通常、次のことを行います。

var MyService = DDP.connect(service_url);
var MyOtherService = DDP.connect(other_service_url);
var RegistrationService = DDP.connect(registration_service_url);

私がやりたいことは、loginWithFacebookメソッドを使用することです。問題は、フロントエンドで使用Meteor.loginWithFacebookすると、メインのフロントエンド サーバーでバックエンド メソッドが呼び出されることです。

ただし、RegistrationService サーバー (関連するパッケージがある) でそのバックエンド メソッドを呼び出したいと考えています。その理由は、Accounts.onCreateUserフックを使用して余分なことを行っているためであり、登録サービスをフロントエンドから分離したいからです。

明確にするために、たとえそれが正しくなくても、私がこれを持っていると想像してください:

'click #facebook-login': function() {
  Meteor.loginWithFacebook(data, callback)
}

ただし、クライアント側のメソッド .loginWithFacebook を呼び出すときに、loginWithFacebookメソッドでサーバー側のメソッドを使用する必要があるため、実際には次のような効果をもたらしたいと考えています。RegistrationService

'click #facebook-login': function() {
  RegistrationService.loginWithFacebook(data, callback)
}

これに関するヘルプは大歓迎です。ありがとうございました!

4

2 に答える 2

1

DDP.connect を探していると思います。基本的に meteor の下では、クライアントからサーバーへのすべての呼び出しと、サーバーからクライアントへのすべての通信で分散データ プロトコルが使用されます。( https://www.meteor.com/ddp )ドキュメントが指摘しているように、デフォルトでは、クライアントはロード元のサーバーへの DDP 接続を開きます。ただし、あなたの場合、DDP.connect を使用して、RegistrationService の登録サービス サーバーなど、さまざまなタスクのために他のサーバーに接続する必要があります。( http://docs.meteor.com/#/full/ddp_connect ) 簡単な例として、次のようなことをしようとします:

if (Meteor.isClient) {
    var registrationServices = DDP.connect("http://your.registrationservices.com:3000");

    Template.registerSomething.events({
        'click #facebook-login': function(){
            registrationServices.call('loginWithFacebook', data, function(error, results){ ... }); // registration services points to a different service from your default.
        }
    });
}

さまざまなマイクロサービスにさまざまな DDP.connect を使用できることも忘れないでください。これらは、他のアプリケーションの Web サービス接続に似ています。

于 2015-05-12T20:19:56.887 に答える
1

およびへのサービスのリモート接続を指定することにより、他のサービスを介して接続を実現できる場合がAccountsありMeteor.usersます。

var RegistrationService = DDP.connect(registration_service_url);
Accounts.connection = RegistrationService;
Meteor.users = new Meteor.Collection('users',{connection: RegistrationService});

次に呼び出しMeteor.loginWithFacebook、他のアプリのメソッドを使用してログインする必要があります。

于 2015-05-13T09:33:04.053 に答える