CNode

引用一个长连接模块

问答
Oouyangxuanyun发布于10 年前最后回复10 年前8 回复4114 浏览0 收藏

我的项目自己写了一个模块是先创建一个连接,然后通过这个连接执行很多函数, 如果我的其他模块引用了这个模块那是每个引用都新创建一个连接吗,还是这些模块都共用一个连接呢?? 就像下面创建了client连接,如果其他模块require了util,那他们是共用一个client连接吗?

var thirdpartmodule = require('thirdpartmodule'); var util = new Object(); var connstr = 'XXX'; var client = thirdpartmodule.createClient(connstr); client.connect();

function a(){client.geta() ... }

function b(){client.getb()...}

function c(){client.getc()...}

util.a = a; util.b = b; util.c = c;

module.exports = util

查看回复

回复 (7)

H
hyj1991#1·10 年前

Node require函数会对模块进行缓存,准确的说是执行一遍js代码后缓存module.exports的内容,因此你不必担心,多次require也只会创建一次长连接

B
bajian#2·10 年前

额,js命门可以由数字开头的吗? var 3rdpartmodule = require(‘3rdpartmodule’);

S
slclub#3·10 年前

如果是require 内实现的长连接;不是拿出来 new 之后初始化的那么就是一个;require 其实知会执行一次;其他的会都会走缓存; 不在外面初始化去连接,那么就只有一个实例 你是调用后在外面用new 创建方式或者函数直接创建的连接就会有多个实例了

你的模块看起来比较适合,单例的模式;

O
ouyangxuanyun#5·10 年前
O
ouyangxuanyun#7·10 年前

@thesadboy 例子写的匆忙,细节还需注意,谢谢

参与回复
登录后即可参与回复。登录