Client class
IoT 中心服务客户端用于通过 Azure IoT 中心与设备通信。 它使 SDK 用户能够:
- 将云到设备(也称为命令)发送到设备:命令在 IoT 中心排队,仅在设备连接时以异步方式传递。 每个设备只能排队 50 个命令。
- 在设备上调用直接方法(仅当设备当前已连接时才有效:它是与设备通信的同步方式)
- 侦听设备为以前的命令发送的反馈消息。
- 侦听来自设备的文件上传通知。
用户应通过调用工厂方法之一(Client 或 SharedAccessSignature)创建新的 实例,以创建 IoT 中心服务客户端。
- 扩展
-
EventEmitter
方法
继承的方法
| add |
|
| emit<E>(string | symbol, any[]) | 同步调用为名为 如果事件具有侦听器,则返回
|
| event |
返回一个数组,其中列出发出器已注册侦听器的事件。
|
| get |
返回由 |
| listener |
返回侦听名为 |
| listeners<E>(string | symbol) | 返回名为
|
| off<E>(string | symbol, (args: any[]) => void) |
|
| on<E>(string | symbol, (args: any[]) => void) | 将
返回对 默认情况下,以添加事件侦听器的顺序调用事件侦听器。
|
| once<E>(string | symbol, (args: any[]) => void) | 为名为 的事件添加
返回对 默认情况下,以添加事件侦听器的顺序调用事件侦听器。
|
| prepend |
将
返回对 |
| prepend |
将名为
返回对 |
| raw |
返回名为
|
| remove |
删除所有侦听器或指定 删除代码中的其他位置添加的侦听器是错误的做法,尤其是在由其他组件或模块(例如套接字或文件流)创建 返回对 |
| remove |
从名为
发出事件后,在发出时附加到该事件的所有侦听器将按顺序调用。 这意味着在发射后且最后一个监听者完成执行前的任何
由于监听器通过内部数组管理,调用该数组会改变监听器被移除 后 注册的任何监听者的位置索引。 这不会影响调用侦听器的顺序,但这意味着需要重新创建 将单个函数添加为单个事件的处理程序多次(如以下示例所示),
返回对 |
| set |
默认情况下,如果为特定事件添加了多个 返回对 |
| [capture |
|
方法详细信息
close()
function close(): Promise<ResultWithIncomingMessage<Disconnected>>
返回
Promise<ResultWithIncomingMessage<Disconnected>>
close(IncomingMessageCallback<Disconnected>)
关闭与 IoT 中心的连接。
function close(done?: IncomingMessageCallback<Disconnected>)
参数
- done
-
IncomingMessageCallback<Disconnected>
操作完成后要调用的可选函数。
done 将传递 Error 对象参数,如果操作成功完成,则该参数将为 null。
fromConnectionString(string, TransportCtor)
使用默认传输(Amqp)或第二个参数中指定的一个从给定连接字符串创建 IoT 中心服务客户端。
static function fromConnectionString(connStr: string, transportCtor?: TransportCtor): Client
参数
- connStr
-
string
封装 IoT 中心的“设备连接”权限的连接字符串。
- transportCtor
- TransportCtor
返回
fromSharedAccessSignature(string, TransportCtor)
使用默认传输(Amqp)或第二个参数中指定的共享访问签名从给定的共享访问签名创建 IoT 中心服务客户端。
static function fromSharedAccessSignature(sharedAccessSignature: string, transportCtor?: TransportCtor): Client
参数
- sharedAccessSignature
-
string
一个共享访问签名,用于封装 IoT 中心的“服务连接”权限。
- transportCtor
- TransportCtor
返回
fromTokenCredential(string, TokenCredential, TransportCtor)
使用默认传输(Amqp)或第二个参数中指定的一个从给定的 Azure tokenCredential 创建 IoT 中心服务客户端。
static function fromTokenCredential(hostName: string, tokenCredential: TokenCredential, transportCtor?: TransportCtor): Client
参数
- hostName
-
string
Azure 服务的主机名。
- tokenCredential
- TokenCredential
用于向 Azure 服务进行身份验证的 Azure TokenCredential
- transportCtor
- TransportCtor
返回
getFeedbackReceiver()
function getFeedbackReceiver(): Promise<ResultWithIncomingMessage<ServiceReceiver>>
返回
Promise<ResultWithIncomingMessage<ServiceReceiver>>
getFeedbackReceiver(IncomingMessageCallback<ServiceReceiver>)
返回一个 AmqpReceiver 对象,该对象在客户端收到新的反馈消息时发出事件。
function getFeedbackReceiver(done?: IncomingMessageCallback<ServiceReceiver>)
参数
- done
-
IncomingMessageCallback<ServiceReceiver>
操作完成后要调用的可选函数。 将使用两个参数调用 done:Error 对象(可以为 null)和 AmqpReceiver 对象。
getFileNotificationReceiver()
function getFileNotificationReceiver(): Promise<ResultWithIncomingMessage<ServiceReceiver>>
返回
Promise<ResultWithIncomingMessage<ServiceReceiver>>
getFileNotificationReceiver(IncomingMessageCallback<ServiceReceiver>)
返回一个 AmqpReceiver 对象,该对象在客户端收到新文件上传通知时发出事件。
function getFileNotificationReceiver(done?: IncomingMessageCallback<ServiceReceiver>)
参数
- done
-
IncomingMessageCallback<ServiceReceiver>
操作完成后要调用的可选函数。 将使用两个参数调用 done:Error 对象(可以为 null)和 AmqpReceiver 对象。
invokeDeviceMethod(string, DeviceMethodParams)
function invokeDeviceMethod(deviceId: string, methodParams: DeviceMethodParams): Promise<ResultWithIncomingMessage<any>>
参数
- deviceId
-
string
- methodParams
- DeviceMethodParams
返回
Promise<ResultWithIncomingMessage<any>>
invokeDeviceMethod(string, DeviceMethodParams, IncomingMessageCallback<any>)
在特定设备或模块上调用方法。
function invokeDeviceMethod(deviceId: string, methodParams: DeviceMethodParams, done?: IncomingMessageCallback<any>)
参数
- deviceId
-
string
现有设备标识的标识符。
- methodParams
- DeviceMethodParams
- done
-
IncomingMessageCallback<any>
使用方法执行结果调用的可选回调。
invokeDeviceMethod(string, string, DeviceMethodParams)
function invokeDeviceMethod(deviceId: string, moduleId: string, methodParams: DeviceMethodParams): Promise<ResultWithIncomingMessage<any>>
参数
- deviceId
-
string
- moduleId
-
string
- methodParams
- DeviceMethodParams
返回
Promise<ResultWithIncomingMessage<any>>
invokeDeviceMethod(string, string, DeviceMethodParams, IncomingMessageCallback<any>)
function invokeDeviceMethod(deviceId: string, moduleId: string, methodParams: DeviceMethodParams, done: IncomingMessageCallback<any>)
参数
- deviceId
-
string
- moduleId
-
string
- methodParams
- DeviceMethodParams
- done
-
IncomingMessageCallback<any>
open()
function open(): Promise<ResultWithIncomingMessage<Connected>>
返回
Promise<ResultWithIncomingMessage<Connected>>
open(IncomingMessageCallback<Connected>)
打开与 IoT 中心的连接。
function open(done?: IncomingMessageCallback<Connected>)
参数
- done
-
IncomingMessageCallback<Connected>
操作完成后要调用的可选函数。
done 将传递 Error 对象参数,如果操作成功完成,则该参数将为 null。
send(string, Message | BufferConvertible)
function send(deviceId: string, message: Message | BufferConvertible): Promise<ResultWithIncomingMessage<MessageEnqueued>>
参数
- deviceId
-
string
- message
-
Message | BufferConvertible
返回
Promise<ResultWithIncomingMessage<MessageEnqueued>>
send(string, Message | BufferConvertible, IncomingMessageCallback<MessageEnqueued>)
向设备发送消息。
function send(deviceId: string, message: Message | BufferConvertible, done?: IncomingMessageCallback<MessageEnqueued>)
参数
- deviceId
-
string
现有设备标识的标识符。
- message
-
Message | BufferConvertible
要发送到设备的消息正文。
如果
- done
-
IncomingMessageCallback<MessageEnqueued>
操作完成后要调用的可选函数。 将使用两个参数调用 done:Error 对象(可以为 null)和用于日志记录或调试的特定于传输的响应对象。
setRetryPolicy(RetryPolicy)
设置客户端用于重试网络操作的策略。
function setRetryPolicy(policy: RetryPolicy)
参数
- policy
-
RetryPolicy
用于重试操作的策略(例如打开、发送等)。 SDK 附带了 2 个“内置”策略:ExponentialBackoffWithJitter(默认值)和 NoRetry(若要取消任何形式的重试)。 用户还可以传递自己的对象,只要它实现 2 种方法:- shouldRetry(err: Error): 布尔值: 指示是否应基于错误类型重试操作 - nextRetryTimeout(retryCount: number, throttled: boolean): number : 根据过去尝试次数 (retryCount) 返回等待时间(以毫秒为单位),并返回错误是限制错误的事实。
继承的方法详细信息
addListener<E>(string | symbol, (args: any[]) => void)
emitter.on(eventName, listener)的别名。
function addListener<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
返回
继承自 EventEmitter.addListener
emit<E>(string | symbol, any[])
同步调用为名为 eventName的事件注册的每个侦听器,按照注册的顺序,将提供的参数传递给每个侦听器。
如果事件具有侦听器,则返回 true,否则 false。
import { EventEmitter } from 'node: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
function emit<E>(eventName: string | symbol, args: any[]): boolean
参数
- eventName
-
string | symbol
- args
-
any[]
返回
boolean
继承自 EventEmitter.emit
eventNames()
返回一个数组,其中列出发出器已注册侦听器的事件。
import { EventEmitter } from 'node: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) ]
function eventNames(): (string | symbol)[]
返回
(string | symbol)[]
继承自 EventEmitter.eventNames
getMaxListeners()
返回由 EventEmitter 设置的 emitter.setMaxListeners(n) 的当前最大侦听器值,或默认值为 events.defaultMaxListeners。
function getMaxListeners(): number
返回
number
继承自 EventEmitter.getMaxListeners
listenerCount<E>(string | symbol, (args: any[]) => void)
返回侦听名为 eventName的事件的侦听器数。
如果提供了 listener,它将返回在事件的侦听器列表中找到的侦听器的次数。
function listenerCount<E>(eventName: string | symbol, listener?: (args: any[]) => void): number
参数
- eventName
-
string | symbol
正在侦听的事件的名称
- listener
-
(args: any[]) => void
事件处理程序函数
返回
number
继承自 EventEmitter.listenerCount
listeners<E>(string | symbol)
返回名为 eventName的事件的侦听器数组的副本。
server.on('connection', (stream) => {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
function listeners<E>(eventName: string | symbol): (args: any[]) => void[]
参数
- eventName
-
string | symbol
返回
(args: any[]) => void[]
继承自 EventEmitter.listeners
off<E>(string | symbol, (args: any[]) => void)
emitter.removeListener()的别名。
function off<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
返回
继承自 EventEmitter.off
on<E>(string | symbol, (args: any[]) => void)
将 listener 函数添加到名为 eventName的事件的侦听器数组的末尾。 不会进行检查,以查看是否已添加 listener。 传递 eventName 和 listener 相同组合的多个调用将导致添加 listener 并多次调用。
server.on('connection', (stream) => {
console.log('someone connected!');
});
返回对 EventEmitter的引用,以便可以链接调用。
默认情况下,以添加事件侦听器的顺序调用事件侦听器。
emitter.prependListener() 方法可用作将事件侦听器添加到侦听器数组开头的替代方法。
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
function on<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
事件的名称。
- listener
-
(args: any[]) => void
回调函数
返回
继承自 EventEmitter.on
once<E>(string | symbol, (args: any[]) => void)
为名为 的事件添加 listenereventName 函数。 下次触发 eventName 时,将删除此侦听器,然后调用。
server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});
返回对 EventEmitter的引用,以便可以链接调用。
默认情况下,以添加事件侦听器的顺序调用事件侦听器。
emitter.prependOnceListener() 方法可用作将事件侦听器添加到侦听器数组开头的替代方法。
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
function once<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
事件的名称。
- listener
-
(args: any[]) => void
回调函数
返回
继承自 EventEmitter.once
prependListener<E>(string | symbol, (args: any[]) => void)
将 listener。 传递 eventName 和 listener 相同组合的多个调用将导致添加 listener 并多次调用。
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
返回对 EventEmitter的引用,以便可以链接调用。
function prependListener<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
事件的名称。
- listener
-
(args: any[]) => void
回调函数
返回
继承自 EventEmitter.prependListener
prependOnceListener<E>(string | symbol, (args: any[]) => void)
将名为 eventName 时,将删除此侦听器,然后调用。
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
返回对 EventEmitter的引用,以便可以链接调用。
function prependOnceListener<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
事件的名称。
- listener
-
(args: any[]) => void
回调函数
返回
继承自 EventEmitter.prependOnceListener
rawListeners<E>(string | symbol)
返回名为 eventName的事件的侦听器数组的副本,包括任何包装器(如由 .once()创建的包装器)。
import { EventEmitter } from 'node:events';
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');
function rawListeners<E>(eventName: string | symbol): (args: any[]) => void[]
参数
- eventName
-
string | symbol
返回
(args: any[]) => void[]
继承自 EventEmitter.rawListeners
removeAllListeners<E>(string | symbol)
删除所有侦听器或指定 eventName的侦听器。
删除代码中的其他位置添加的侦听器是错误的做法,尤其是在由其他组件或模块(例如套接字或文件流)创建 EventEmitter 实例时。
返回对 EventEmitter的引用,以便可以链接调用。
function removeAllListeners<E>(eventName?: string | symbol): Client
参数
- eventName
-
string | symbol
返回
继承自 EventEmitter.removeAllListeners
removeListener<E>(string | symbol, (args: any[]) => void)
从名为 listener的事件的侦听器数组中删除指定的 eventName。
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener() 最多会从侦听器数组中删除侦听器的一个实例。 如果为指定的 eventName向侦听器数组添加了多次单个侦听器,则必须多次调用 removeListener() 才能删除每个实例。
发出事件后,在发出时附加到该事件的所有侦听器将按顺序调用。 这意味着在发射后且最后一个监听者完成执行前的任何removeListener()removeAllListeners()调用都不会将其从emit()进行中移除。 后续事件的行为与预期相同。
import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
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
由于监听器通过内部数组管理,调用该数组会改变监听器被移除 后 注册的任何监听者的位置索引。 这不会影响调用侦听器的顺序,但这意味着需要重新创建 emitter.listeners() 方法返回的侦听器数组的任何副本。
将单个函数添加为单个事件的处理程序多次(如以下示例所示),removeListener() 将删除最近添加的实例。 在示例中,删除 once('ping') 侦听器:
import { EventEmitter } from 'node:events';
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');
返回对 EventEmitter的引用,以便可以链接调用。
function removeListener<E>(eventName: string | symbol, listener: (args: any[]) => void): Client
参数
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
返回
继承自 EventEmitter.removeListener
setMaxListeners(number)
默认情况下,如果为特定事件添加了多个 EventEmitter 侦听器,10将打印警告。 这是一个有用的默认值,可帮助查找内存泄漏。
emitter.setMaxListeners() 方法允许修改此特定 EventEmitter 实例的限制。 该值可以设置为 Infinity(或 0),以指示无限数量的侦听器。
返回对 EventEmitter的引用,以便可以链接调用。
function setMaxListeners(n: number): Client
参数
- n
-
number
返回
继承自 EventEmitter.setMaxListeners
[captureRejectionSymbol](Error, string | symbol, any[])
Symbol.for('nodejs.rejection')该方法用于在发射事件时发生承诺拒绝,并且captureRejections在发射端被启用时调用。
可以用 events.captureRejectionSymbol 代替 Symbol.for('nodejs.rejection')。
import { EventEmitter, captureRejectionSymbol } from 'node:events';
class MyClass extends EventEmitter {
constructor() {
super({ captureRejections: true });
}
[captureRejectionSymbol](err, event, ...args) {
console.log('rejection happened for', event, 'with', err, ...args);
this.destroy(err);
}
destroy(err) {
// Tear the resource down here.
}
}
function [captureRejectionSymbol](error: Error, event: string | symbol, args: any[])
参数
- error
-
Error
- event
-
string | symbol
- args
-
any[]
继承自 EventEmitter.__@captureRejectionSymbol@88