Noodles, Poodles and More!

    @y2nk4/nacos
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.2 • Public • Published

    nacos-sdk-nodejs

    NPM version build status David deps lerna

    Nacos Node.js SDK

    Install

    npm install nacos --save

    Version Mapping

    Node.js SDK \ Nacos Server 0.x.0 1.0.0
    1.x
    2.x

    Usage

    Service Discovery

    'use strict';
    
    const NacosNamingClient = require('nacos').NacosNamingClient;
    const logger = console;
    
    const client = new NacosNamingClient({
      logger,
      serverList: '127.0.0.1:8848', // replace to real nacos serverList
      namespace: 'public',
      account: '<account>',
      password: '<password>'
    });
    await client.ready();
    
    const serviceName = 'nodejs.test.domain';
    
    // registry instance
    await client.registerInstance(serviceName, {
      ip: '1.1.1.1',
      port: 8080,
    });
    await client.registerInstance(serviceName, {
      ip: '2.2.2.2',
      port: 8080,
    });
    
    // subscribe instance
    client.subscribe(serviceName, hosts => {
      console.log(hosts);
    });
    
    // deregister instance
    await client.deregisterInstance(serviceName, {
      ip: '1.1.1.1',
      port: 8080,
    });

    Config Service

    import {NacosConfigClient} from 'nacos';   // ts
    const NacosConfigClient = require('nacos').NacosConfigClient; // js
    
    // for find address mode
    const configClient = new NacosConfigClient({
      endpoint: 'acm.aliyun.com',
      namespace: '***************',
      accessKey: '***************',
      secretKey: '***************',
      requestTimeout: 6000,
    });
    
    // for direct mode
    const configClient = new NacosConfigClient({
      serverAddr: '127.0.0.1:8848',
      namespace: '<namespace>',
      account: '<account>',
      password: '<password>'
    });
    
    // get config once
    const content= await configClient.getConfig('test', 'DEFAULT_GROUP');
    console.log('getConfig = ',content);
    
    // listen data changed
    configClient.subscribe({
      dataId: 'test',
      group: 'DEFAULT_GROUP',
    }, content => {
      console.log(content);
    });
    
    // publish config
    const content= await configClient.publishSingle('test', 'DEFAULT_GROUP', '测试');
    console.log('getConfig = ',content);
    
    // remove config
    await configClient.remove('test', 'DEFAULT_GROUP');

    NacosConfigClient options: ClientOptions

    default value: ClientOptions default value

    APIs

    Service Discovery

    • registerInstance(serviceName, instance, [groupName]) Register an instance to service.
      • serviceName {String} Service name
      • instance {Instance}
        • ip {String} IP of instance
        • port {Number} Port of instance
        • [weight] {Number} weight of the instance, default is 1.0
        • [ephemeral] {Boolean} active until the client is alive, default is true
        • [clusterName] {String} Virtual cluster name
      • [groupName] {String} group name, default is DEFAULT_GROUP
    • deregisterInstance(serviceName, ip, port, [cluster]) Delete instance from service.
      • serviceName {String} Service name
      • instance {Instance}
        • ip {String} IP of instance
        • port {Number} Port of instance
        • [weight] {Number} weight of the instance, default is 1.0
        • [ephemeral] {Boolean} active until the client is alive, default is true
        • [clusterName] {String} Virtual cluster name
      • [groupName] {String} group name, default is DEFAULT_GROUP
    • getAllInstances(serviceName, [groupName], [clusters], [subscribe]) Query instance list of service.
      • serviceName {String} Service name
      • [groupName] {String} group name, default is DEFAULT_GROUP
      • [clusters] {String} Cluster names
      • [subscribe] {Boolean} whether subscribe the service, default is true
    • getServerStatus() Get the status of nacos server, 'UP' or 'DOWN'.
    • subscribe(info, listener) Subscribe the instances of the service
      • info {Object}|{String} service info, if type is string, it's the serviceName
      • listener {Function} the listener function
    • unSubscribe(info, [listener]) Unsubscribe the instances of the service
      • info {Object}|{String} service info, if type is string, it's the serviceName
      • listener {Function} the listener function, if not provide, will unSubscribe all listeners under this service

    Config Service

    • async function getConfig(dataId, group)
      • {String} dataId - data id
      • {String} group - group name
    • async function publishSingle(dataId, group, content)
      • {String} dataId - data id
      • {String} group - group name
      • {String} content - content you want to publish
    • async function remove(dataId, group)
      • {String} dataId - data id
      • {String} group - group name
    • function subscribe(info, listener)
      • {Object} info
        • {String} dataId - data id
        • {String} group - group name
      • {Function} listener - callback handler
    • function unSubscribe(info, [listener])
      • {Object} info
        • {String} dataId - data id
        • {String} group - group
      • {Function} listener - callback handler(optional,remove all listener when it is null)

    Questions & Suggestions

    Please let us know how can we help. Do check out issues for bug reports or suggestions first.

    PR is welcome.

    License

    Apache License V2

    Install

    npm i @y2nk4/nacos

    DownloadsWeekly Downloads

    1

    Version

    2.0.2

    License

    Apache

    Unpacked Size

    11.4 kB

    Total Files

    6

    Last publish

    Collaborators

    • y2nk4