Compare commits

...

10 Commits

Author SHA1 Message Date
Harry Chen 8a5568de77 v2.6.0 2023-12-14 10:43:15 +08:00
Bob 57cd21060b
chore: nacos-naming add more types (#105)
Co-authored-by: Harry Chen <czy88840616@gmail.com>
2023-12-14 10:41:52 +08:00
Nolan Zhang 7fa34ff6a6
chore: add Hosts typings (#97)
I have deployed NACOS version 2.1.1. Has the type changed here because of the version upgrade? I have fixed it
2023-12-13 19:56:09 +08:00
Marc SUN 22c0e57947
chore: add nacos auth supportt typings (#114)
* Update index.d.ts

add nacos auth support

* Update interface.ts

add nacos auth support
2023-12-13 19:54:50 +08:00
陈浩 Nineteen cdea9a26b1
chore: support nacos-sdk-nodejs(2.5.0) example and add auth example (#100) 2023-12-13 19:52:01 +08:00
唯然 50ac48e026
chore: update pkg.license => Apache-2.0 (#101)
rome reports "✖ Unknown license Apache".

refs: https://rome.tools/
2023-03-10 11:23:25 +08:00
Harry Chen 3c6840bdd7 v2.5.1 2022-12-08 16:14:07 +08:00
Jack Hu 4c9af68899
fix: no retry with dns.NOTFOUND (#102)
Co-authored-by: hujingkang <hujingkang@joyy.com>
2022-12-08 16:04:08 +08:00
Harry Chen cc6667c5b1 v2.5.0 2022-08-22 00:05:23 +08:00
Darcy d6ee163a36
fix: comparing the host information using an unstable JSON string (#95) 2022-08-22 00:03:21 +08:00
11 changed files with 65 additions and 14 deletions

View File

@ -3,8 +3,11 @@
const NacosConfigClient = require('nacos').NacosConfigClient; const NacosConfigClient = require('nacos').NacosConfigClient;
const configClient = new NacosConfigClient({ const configClient = new NacosConfigClient({
serverAddr: '106.14.43.196:8848', serverAddr: 'aliyun.nacos.net:80',
namespace: '', namespace: '',
// 如果nacos开启了认证鉴权需要在此处填写用户名密码
// username: 'xxx',
// password: 'xxx'
}); });
function sleep(time){ function sleep(time){
@ -18,7 +21,7 @@ function sleep(time){
(async () => { (async () => {
await configClient.ready(); await configClient.ready();
const dataId = 'nacos.test.1'; const dataId = 'nacos.test.22';
const group = 'DEFAULT_GROUP'; const group = 'DEFAULT_GROUP';
const str = `example_test_${Math.random()}_${Date.now()}`; const str = `example_test_${Math.random()}_${Date.now()}`;

View File

@ -2,6 +2,6 @@
"name": "nacos-example", "name": "nacos-example",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"nacos": "^1.0.0" "nacos": "^2.5.0"
} }
} }

View File

@ -16,5 +16,5 @@
] ]
} }
}, },
"version": "2.4.2" "version": "2.6.0"
} }

View File

@ -13,7 +13,7 @@
"ci": "npm run cov", "ci": "npm run cov",
"build": "lerna run build && cp ./README.md ./packages/nacos/README.md" "build": "lerna run build && cp ./README.md ./packages/nacos/README.md"
}, },
"license": "Apache", "license": "Apache-2.0",
"bugs": { "bugs": {
"url": "https://github.com/nacos-group/nacos-sdk-nodejs/issues" "url": "https://github.com/nacos-group/nacos-sdk-nodejs/issues"
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "nacos-config", "name": "nacos-config",
"version": "2.4.1", "version": "2.6.0",
"description": "nacos config client", "description": "nacos config client",
"keywords": [ "keywords": [
"nacos-config", "nacos-config",

View File

@ -19,6 +19,7 @@ import { ClientOptionKeys, IConfiguration, IServerListManager } from './interfac
import * as urllib from 'urllib'; import * as urllib from 'urllib';
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import { encodingParams, transformGBKToUTF8 } from './utils'; import { encodingParams, transformGBKToUTF8 } from './utils';
import * as dns from 'dns';
export class HttpAgent { export class HttpAgent {
@ -195,6 +196,9 @@ export class HttpAgent {
break; break;
} }
} catch (err) { } catch (err) {
if (err.code === dns.NOTFOUND) {
throw err;
}
err.url = `${method} ${url}`; err.url = `${method} ${url}`;
err.data = data; err.data = data;
err.headers = headers; err.headers = headers;

View File

@ -262,6 +262,8 @@ export interface ClientOptions {
serverAddr?: string; // 用于直连,包含端口 serverAddr?: string; // 用于直连,包含端口
unit?: string; // 内部单元化用 unit?: string; // 内部单元化用
nameServerAddr?: string; // 老的兼容参数,逐步废弃,同 endpoint nameServerAddr?: string; // 老的兼容参数,逐步废弃,同 endpoint
username?: string; // 认证的用户名
password?: string; // 认证的密码
cacheDir?: string; // 缓存文件的路径 cacheDir?: string; // 缓存文件的路径
identityKey?: string; // Identity Key identityKey?: string; // Identity Key
identityValue?: string; // Identity Value identityValue?: string; // Identity Value

View File

@ -3,14 +3,35 @@
* Create Time: 2021/8/20 9:12 * Create Time: 2021/8/20 9:12
*/ */
interface Instance { interface Instance {
instanceId: string,
ip: string, //IP of instance ip: string, //IP of instance
port: number, //Port of instance port: number, //Port of instance
healthy: boolean,
enabled: boolean,
serviceName?: string,
weight?: number, weight?: number,
ephemeral?: boolean, ephemeral?: boolean,
clusterName?: string clusterName?: string
} }
type Hosts = string[]; export interface Host {
instanceId: string;
ip: string;
port: number;
weight: number;
healthy: boolean;
enabled: boolean;
ephemeral: boolean;
clusterName: string;
serviceName: string;
metadata: any;
instanceHeartBeatInterval: number;
instanceIdGenerator: string;
instanceHeartBeatTimeOut: number;
ipDeleteTimeout: number;
}
type Hosts = Host[];
interface SubscribeInfo { interface SubscribeInfo {
serviceName: string, serviceName: string,
@ -18,11 +39,22 @@ interface SubscribeInfo {
clusters?: string clusters?: string
} }
interface NacosNamingClientConfig {
logger: typeof console,
serverList: string | string[],
namespace?: string,
username?: string,
password?: string,
endpoint?: string,
vipSrvRefInterMillis?: number,
ssl?: boolean
}
/** /**
* Nacos服务发现组件 * Nacos服务发现组件
*/ */
export class NacosNamingClient { export class NacosNamingClient {
constructor (config: { logger: typeof console, serverList: string | string[], namespace?: string }) constructor (config: NacosNamingClientConfig);
ready: () => Promise<void>; ready: () => Promise<void>;
// Register an instance to service // Register an instance to service
@ -44,6 +76,14 @@ export class NacosNamingClient {
clusters?: string, //Cluster names clusters?: string, //Cluster names
subscribe?: boolean //whether subscribe the service, default is true subscribe?: boolean //whether subscribe the service, default is true
) => Promise<Hosts>; ) => Promise<Hosts>;
// Select instance list of service.
selectInstances: (
serviceName: string,
groupName?: string,
clusters?: string,
healthy?: boolean,
subscribe?: boolean
) => Promise<Hosts>;
// Get the status of nacos server, 'UP' or 'DOWN'. // Get the status of nacos server, 'UP' or 'DOWN'.
getServerStatus: () => 'UP' | 'DOWN'; getServerStatus: () => 'UP' | 'DOWN';
subscribe: ( subscribe: (
@ -54,4 +94,4 @@ export class NacosNamingClient {
info: SubscribeInfo | string, //service info, if type is string, it's the serviceName info: SubscribeInfo | string, //service info, if type is string, it's the serviceName
listener: (host: Hosts) => void //the listener function listener: (host: Hosts) => void //the listener function
) => void; ) => void;
} }

View File

@ -22,6 +22,7 @@ const Base = require('sdk-base');
const Constants = require('../const'); const Constants = require('../const');
const ServiceInfo = require('./service_info'); const ServiceInfo = require('./service_info');
const PushReceiver = require('./push_receiver'); const PushReceiver = require('./push_receiver');
const equals = require('equals');
class HostReactor extends Base { class HostReactor extends Base {
constructor(options = {}) { constructor(options = {}) {
@ -92,7 +93,7 @@ class HostReactor extends Base {
const key = host.ip + ':' + host.port; const key = host.ip + ':' + host.port;
newHostMap.set(key, host); newHostMap.set(key, host);
if (oldHostMap.has(key) && JSON.stringify(host) !== JSON.stringify(oldHostMap.get(key))) { if (oldHostMap.has(key) && !equals(host, oldHostMap.get(key))) {
modHosts.push(host); modHosts.push(host);
continue; continue;
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "nacos-naming", "name": "nacos-naming",
"version": "2.4.2", "version": "2.6.0",
"description": "nacos (https://nacos.io/en-us/) nodejs sdk", "description": "nacos (https://nacos.io/en-us/) nodejs sdk",
"main": "index.js", "main": "index.js",
"files": [ "files": [
@ -43,6 +43,7 @@
}, },
"dependencies": { "dependencies": {
"address": "^1.1.0", "address": "^1.1.0",
"equals": "^1.0.5",
"mz-modules": "^2.1.0", "mz-modules": "^2.1.0",
"sdk-base": "^3.6.0", "sdk-base": "^3.6.0",
"urllib": "^2.33.3", "urllib": "^2.33.3",

View File

@ -1,6 +1,6 @@
{ {
"name": "nacos", "name": "nacos",
"version": "2.4.2", "version": "2.6.0",
"description": "nacos client main package", "description": "nacos client main package",
"keywords": [ "keywords": [
"nacos", "nacos",
@ -12,8 +12,8 @@
"main": "dist/index.js", "main": "dist/index.js",
"author": "czy88840616@gmail.com", "author": "czy88840616@gmail.com",
"dependencies": { "dependencies": {
"nacos-config": "^2.4.1", "nacos-config": "^2.6.0",
"nacos-naming": "^2.4.2" "nacos-naming": "^2.6.0"
}, },
"devDependencies": { "devDependencies": {
"@types/mocha": "^5.2.5", "@types/mocha": "^5.2.5",