Skip to content

nim.nos.NIMNOS

Zvicii edited this page Jul 8, 2022 · 7 revisions

Class: NIMNOS

nim/nos.NIMNOS

Hierarchy

  • EventEmitter

    NIMNOS

Table of contents

Methods

Properties

Constructors

Methods

once

Static once(emitter, eventName, options?): Promise<any[]>

Creates a Promise that is fulfilled when the EventEmitter emits the given event or that is rejected if the EventEmitter emits 'error' while waiting. The Promise will resolve with an array of all the arguments emitted to the given event.

This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event semantics and does not listen to the 'error' event.

const { once, EventEmitter } = require('events');

async function run() {
  const ee = new EventEmitter();

  process.nextTick(() => {
    ee.emit('myevent', 42);
  });

  const [value] = await once(ee, 'myevent');
  console.log(value);

  const err = new Error('kaboom');
  process.nextTick(() => {
    ee.emit('error', err);
  });

  try {
    await once(ee, 'myevent');
  } catch (err) {
    console.log('error happened', err);
  }
}

run();

The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the 'error' event itself, then it is treated as any other kind of event without special handling:

const { EventEmitter, once } = require('events');

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.log('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

An AbortSignal can be used to cancel waiting for the event:

const { EventEmitter, once } = require('events');

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!

Since

v11.13.0, v10.16.0

Parameters

Name Type
emitter NodeEventTarget
eventName string | symbol
options? StaticEventEmitterOptions

Returns

Promise<any[]>

Static once(emitter, eventName, options?): Promise<any[]>

Parameters

Name Type
emitter DOMEventTarget
eventName string
options? StaticEventEmitterOptions

Returns

Promise<any[]>


on

Static on(emitter, eventName, options?): AsyncIterableIterator<any>

const { on, EventEmitter } = require('events');

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. It removes all listeners when exiting the loop. The value returned by each iteration is an array composed of the emitted event arguments.

An AbortSignal can be used to cancel waiting on events:

const { on, EventEmitter } = require('events');
const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());

Since

v13.6.0, v12.16.0

Parameters

Name Type Description
emitter EventEmitter -
eventName string The name of the event being listened for
options? StaticEventEmitterOptions -

Returns

AsyncIterableIterator<any>

that iterates eventName events emitted by the emitter


listenerCount

Static listenerCount(emitter, eventName): number

A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

const { EventEmitter, listenerCount } = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2

Since

v0.9.12

Deprecated

Since v3.2.0 - Use listenerCount instead.

Parameters

Name Type Description
emitter EventEmitter The emitter to query
eventName string | symbol The event name

Returns

number


getEventListeners

Static getEventListeners(emitter, name): Function[]

Returns a copy of the array of listeners for the event named eventName.

For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

For EventTargets this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.

const { getEventListeners, EventEmitter } = require('events');

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  getEventListeners(ee, 'foo'); // [listener]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  getEventListeners(et, 'foo'); // [listener]
}

Since

v15.2.0

Parameters

Name Type
emitter EventEmitter | DOMEventTarget
name string | symbol

Returns

Function[]


addListener

addListener(eventName, listener): NIMNOS

Alias for emitter.on(eventName, listener).

Since

v0.1.26

Parameters

Name Type
eventName string | symbol
listener (...args: any[]) => void

Returns

NIMNOS


removeListener

removeListener(eventName, listener): NIMNOS

Removes the specified listener from the listener array for the event namedeventName.

const callback = (stream) => {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified eventName, then removeListener() must be called multiple times to remove each instance.

Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and_before_ the last listener finishes execution will not remove them fromemit() in progress. Subsequent events behave as expected.

const myEmitter = new MyEmitter();

const callbackA = () => {
  console.log('A');
  myEmitter.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
//   A

Because listeners are managed using an internal array, calling this will change the position indices of any listener registered after the listener being removed. This will not impact the order in which listeners are called, but it means that any copies of the listener array as returned by the emitter.listeners() method will need to be recreated.

When a single function has been added as a handler multiple times for a single event (as in the example below), removeListener() will remove the most recently added instance. In the example the once('ping')listener is removed:

const ee = new EventEmitter();

function pong() {
  console.log('pong');
}

ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);

ee.emit('ping');
ee.emit('ping');

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v0.1.26

Parameters

Name Type
eventName string | symbol
listener (...args: any[]) => void

Returns

NIMNOS


off

off(eventName, listener): NIMNOS

Alias for emitter.removeListener().

Since

v10.0.0

Parameters

Name Type
eventName string | symbol
listener (...args: any[]) => void

Returns

NIMNOS


removeAllListeners

removeAllListeners(event?): NIMNOS

Removes all listeners, or those of the specified eventName.

It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v0.1.26

Parameters

Name Type
event? string | symbol

Returns

NIMNOS


setMaxListeners

setMaxListeners(n): NIMNOS

By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v0.3.5

Parameters

Name Type
n number

Returns

NIMNOS


getMaxListeners

getMaxListeners(): number

Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

Since

v1.0.0

Returns

number


listeners

listeners(eventName): Function[]

Returns a copy of the array of listeners for the event named eventName.

server.on('connection', (stream) => {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]

Since

v0.1.26

Parameters

Name Type
eventName string | symbol

Returns

Function[]


rawListeners

rawListeners(eventName): Function[]

Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));

// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];

// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();

// Logs "log once" to the console and removes the listener
logFnWrapper();

emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');

// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');

Since

v9.4.0

Parameters

Name Type
eventName string | symbol

Returns

Function[]


emit

emit(eventName, ...args): boolean

Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments to each.

Returns true if the event had listeners, false otherwise.

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

// First listener
myEmitter.on('event', function firstListener() {
  console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
  console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
  const parameters = args.join(', ');
  console.log(`event with parameters ${parameters} in third listener`);
});

console.log(myEmitter.listeners('event'));

myEmitter.emit('event', 1, 2, 3, 4, 5);

// Prints:
// [
//   [Function: firstListener],
//   [Function: secondListener],
//   [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener

Since

v0.1.26

Parameters

Name Type
eventName string | symbol
...args any[]

Returns

boolean


listenerCount

listenerCount(eventName): number

Returns the number of listeners listening to the event named eventName.

Since

v3.2.0

Parameters

Name Type Description
eventName string | symbol The name of the event being listened for

Returns

number


prependListener

prependListener(eventName, listener): NIMNOS

Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

server.prependListener('connection', (stream) => {
  console.log('someone connected!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v6.0.0

Parameters

Name Type Description
eventName string | symbol The name of the event.
listener (...args: any[]) => void The callback function

Returns

NIMNOS


prependOnceListener

prependOnceListener(eventName, listener): NIMNOS

Adds a one-timelistener function for the event named eventName to the_beginning_ of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

server.prependOnceListener('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v6.0.0

Parameters

Name Type Description
eventName string | symbol The name of the event.
listener (...args: any[]) => void The callback function

Returns

NIMNOS


eventNames

eventNames(): (string | symbol)[]

Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

const EventEmitter = require('events');
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]

Since

v6.0.0

Returns

(string | symbol)[]


on

on(event, listener): NIMNOS

Parameters

Name Type
event "downloadComplete"
listener (rescode: number, filePath: string, callId: string, resId: string) => void

Returns

NIMNOS

on(event, listener): NIMNOS

Parameters

Name Type
event "uploadComplete"
listener (rescode: number, result: UploadMediaResult) => void

Returns

NIMNOS


once

once(event, listener): NIMNOS

Parameters

Name Type
event "downloadComplete"
listener (rescode: number, filePath: string, callId: string, resId: string) => void

Returns

NIMNOS

once(event, listener): NIMNOS

Parameters

Name Type
event "uploadComplete"
listener (rescode: number, result: UploadMediaResult) => void

Returns

NIMNOS


initEventHandlers

initEventHandlers(): void

注册全局回调

Returns

void


initConfig

initConfig(param, cb): void

Nos模块初始化接口,对上传资源时使用的各场景资源生命周期进行初始化,开发者最多可自定义10个场景,并指定场景资源的生命周期,并可以对缺省场景(kNIMNosDefaultTagResource、kNIMNosDefaultTagIM)进行覆盖(重新指定生命周期)

Parameters

Name Type Description
param InitNosConfigParam 初始化参数
cb InitNosResultCallback 结果回调函数

Returns

void

void 无返回值


fetchMedia

fetchMedia(msg, jsonExtension, res_cb, prg_cb, speed_cb, transfer_cb): boolean

获取资源

Note

200:成功
10206:下载暂停
408:请求过程超时
其他:参见HTTP协议或CURL错误码

Parameters

Name Type Description
msg IMMessage 消息内容
jsonExtension string json扩展参数
res_cb DownloadMediaCallback 下载的回调函数
prg_cb ProgressCallback 下载进度的回调函数
speed_cb SpeedCallback 下载速度的回调函数
transfer_cb TransferInfoCallback 最终下载信息的回调函数

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


stopFetchMedia

stopFetchMedia(msg): boolean

停止获取资源(目前仅对文件消息类型有效)

Note

错误码 10206:成功

Parameters

Name Type Description
msg IMMessage 消息内容

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


uploadResource

uploadResource(local_file, tag, param, res_cb, prg_cb, speed_cb, transfer_cb): boolean

上传资源

Note

200:成功
10200:上传暂停
408:请求过程超时
其他:参见HTTP协议或CURL错误码

Parameters

Name Type Description
local_file string 本地文件的完整路径,路径名必须是utf-8
tag string 场景标签,主要用于确定文件的保存时间
param NOSParams NOS扩展上传\下载接口参数 nim_nos_download_ex"
res_cb UploadMediaExCallback 扩展上传的回调函数
prg_cb ProgressExCallback 扩展上传进度的回调函数
speed_cb SpeedCallback 上传速度的回调函数
transfer_cb TransferInfoCallback 最终上传信息的回调函数

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


stopUploadResource

stopUploadResource(task_id, jsonExtension): boolean

停止上传资源(只能用于调用了UploadResource接口的上传任务)

Note

10200:成功

Parameters

Name Type Description
task_id string 停止上传任务的ID
jsonExtension string json扩展参数

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


downloadResource

downloadResource(nosUrl, param, res_cb, prg_cb, speed_cb, transfer_cb): boolean

下载资源

Note

200:成功
10200:上传暂停
408:请求过程超时
其他:参见HTTP协议或CURL错误码

Parameters

Name Type Description
nosUrl string 下载资源的URL
param NOSParams NOS扩展上传\下载接口参数
res_cb DownloadMediaExCallback 扩展下载的回调函数
prg_cb ProgressExCallback 扩展下载进度的回调函数
speed_cb SpeedCallback 下载速度的回调函数
transfer_cb TransferInfoCallback 最终下载信息的回调函数

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


stopDownloadResource

stopDownloadResource(task_id, jsonExtension): boolean

停止下载资源(只能用于调用了DownloadResourceEx接口的下载任务)

Note

10206:成功

Parameters

Name Type Description
task_id string 停止下载任务的ID
jsonExtension string json扩展参数

Returns

boolean

boolean 检查参数如果不符合要求则返回失败


safeURLToOriginURL

safeURLToOriginURL(safe_url, cb, jsonExtension): void

根据安全链接(短链)换取源链接

Note

200:成功
414 不存在该短链或 safe_url 不是一个有效的短链

Parameters

Name Type Description
safe_url string 安全链接(短链)
cb SafeURLToOriginURLCallback 结果回调
jsonExtension string json扩展参数

Returns

void

void


setSupportQuickTrans

setSupportQuickTrans(quick): void

打开或关闭文件快传开关

Parameters

Name Type Description
quick boolean 是否打开 true:打开 false:关闭

Returns

void

void

Properties

errorMonitor

Static Readonly errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

Installing a listener using this symbol does not change the behavior once an 'error' event is emitted, therefore the process will still crash if no regular 'error' listener is installed.

Defined in

node_modules/@types/node/events.d.ts:272


captureRejectionSymbol

Static Readonly captureRejectionSymbol: typeof captureRejectionSymbol

Defined in

node_modules/@types/node/events.d.ts:273


captureRejections

Static captureRejections: boolean

Sets or gets the default captureRejection value for all emitters.

Defined in

node_modules/@types/node/events.d.ts:278


defaultMaxListeners

Static defaultMaxListeners: number

Defined in

node_modules/@types/node/events.d.ts:279


nos

nos: NIMNOSAPI

Defined in

ts/nim/nos.ts:30

Constructors

constructor

new NIMNOS()

Clone this wiki locally