初始化全局类并使其在整个节点应用程序中可用

时间:2016-11-02 20:16:13

标签: node.js ecmascript-6 apple-push-notifications es6-class

所以我在当前项目中有一个位置,我正在初始化APN(Apple推送通知)连接但我需要初始化它,因为我不需要多个连接的单个实例。目前我有一个类创建连接并将我们需要的侦听器放在连接上以监视错误等。它看起来像这样:

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连接实例。

那么,最好在应用程序的主文件中初始化它并使其成为命名导出,还是应该以其他方式启动?我不认为导入整个主应用程序文件是一个好主意,如果可以避免,但也许这样做没有问题?

此外,如果这太主观了,我很抱歉,但这是我认为我在这里没有看到的问题,也没有在我的谷歌搜索中回答,似乎有些东西可能有一个或多个好的解决方案。

1 个答案:

答案 0 :(得分:-1)

我找到的最佳答案是基于此博客文章:

ES6 Modules - Single Instance Pattern

最后,我的数据库连接如下所示:

let instance = null;

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

        return instance;
    }
}

我计划为我的推送通知服务做同样的事情,并且可能扩展该dbConnection类以将连接添加到连接数组,因为我们需要在启动时连接多个不同的数据库。