0

現在のプロジェクトで、APN(Apple Push Notification)接続を初期化する場所がありますが、1つ以上は必要ありません接続のインスタンス。現在、私は接続を作成し、必要なリスナーを接続上に置いてエラーなどを監視するクラスを持っています。グローバルクラスを初期化してノードアプリケーション全体で利用できるようにする

export default class pushService { 
    constructor(options) { 
     ... check that options is proper ... 

     this.apnConnection = apn.Provider(options); 

     ... add listeners ... 
    } 

    sendMessage(message, recipents) { 
     this.apnConnection.send() messages 
    } 
} 

は今、これは使用する必要があります潜在的に複数の場所がありますが、私が言ったように、私は全体のためのAPN接続の一つだけ接続されているインスタンスを持っていることを好むだろう:それは次のようになります応用。

したがって、アプリケーションのメインファイルでこれを初期化し、名前付きエクスポートにするか、他の方法で開始するのが最善でしょうか?私は、メインアプリケーションファイル全体をインポートすることは避けることができれば素晴らしいアイデアだとは思っていませんが、そうすることに何の問題もないでしょうか?

また、これがあまりにも主観的であれば、申し訳ありませんが、これはまだ私がここで尋ねたことやGoogleの検索で答えたとは思わないと思われます。 。

+0

[node.jsグローバル変数の可能な複製](http://stackoverflow.com/questions/5447771/node-js-global-variables) – tcooc

+0

@tcooc私が質問しているように私はそう信じませんクラスIのインスタンスを作成することと関係しています。クラスIのインスタンスを作成する際に変数を入力する必要があります。 – firrae

+0

クラスのインスタンスを作成し、 'global.foo = instance;'を実行するだけです。 – tcooc

答えて

0

私が見つけた最良の答えはここにこのブログの記事に基づいていた:https://k94n.com/es6-modules-single-instance-pattern

最後に私のデータベース接続は、次のようになります。

インスタンス= nullをしてみましょう。

export class dbConnection { 
    constructor() { 
     if(!instance) 
      instance = dbConnectionLibrary(); 

     return instance; 
    } 
} 

私は私のプッシュ通知サービスのために同じことをやって、そしておそらく私たちは、起動時に接続された複数の異なるデータベースを必要とする新しい要件を持っているような接続の配列に接続を追加することのDBConnectionクラスを拡張することを計画。

関連する問題