# @ohos.distributedsched.linkEnhance (增强连接)
linkEnhance模块提供高效的蓝牙连接和数据传输功能,增强设备间连接的稳定性。使用多通道合并算法,增加设备间连接数,提升跨设备数据传输能力,改善用户使用体验。
> **说明:**
>
> 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import { linkEnhance } from '@kit.DistributedServiceKit';
```
## linkEnhance.createServer
createServer(name: string): Server
在服务端设备上,应用创建服务。通过start()开启后,该设备可作为服务端被其他设备连接。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ---------------------------------------- | ---- | -------- |
| name | string | 是 | 自定义的非空字符串,标识应用的服务名,最大长度255字节。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------- |
| [Server](#server) | 创建成功的服务对象。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390203 | Duplicate server name.|
| 32390206 | Invalid parameter. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name:string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
// 使用服务名构造Server
let server: linkEnhance.Server = linkEnhance.createServer(name);
} catch (err) {
hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
## linkEnhance.createConnection
createConnection(deviceId: string, name: string): Connection
作为客户端的设备创建连接对象,以便后续向服务端设备发起连接。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------------------- | ---- | --------- |
| deviceId | string | 是 | 连接的目标设备的deviceId,即对端设备的BLE MAC地址。BLE MAC的获取方法,请参考[查找设备](../../connectivity/bluetooth/ble-development-guide.md)。|
| name | string | 是 | 连接的目标设备的服务名,非空字符串,最大长度255字节。|
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------- |
| [Connection](#connection) | 创建成功的连接对象。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter. |
**示例:**
在客户端设备上,应用需要主动调用createConnection()接口创建连接对象。
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
} catch (err) {
hilog.info(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
## Server
服务对象,提供启动服务、停止服务、关闭服务、注册/取消注册服务端回调等方法。
以下方法,在服务端设备上执行。
### start()
start(): void
创建服务成功后,需要调用start()开启该服务,方可被客户端连接,最大服务个数为10。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390202 | The number of servers exceeds the limit. |
| 32390300 | Internal error. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
let server: linkEnhance.Server = linkEnhance.createServer(name);
server.start();
} catch (err) {
hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### stop()
stop(): void
使用完服务时,调用`stop`停止服务,停止后可以调用`start`重新开启服务。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
let server: linkEnhance.Server = linkEnhance.createServer(name);
server.start();
server.stop();
} catch (err) {
hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### close()
close(): void
当业务执行完毕,服务端清理资源时,调用close()方法,销毁Server对象,释放相关资源。之后如果再次与对端设备交互,需要重新创建Server对象。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
let server: linkEnhance.Server = linkEnhance.createServer(name);
server.start();
server.close();
} catch (err) {
hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### on('connectionAccepted')
on(type: 'connectionAccepted', callback: Callback<Connection>): void
创建服务成功后,注册connectionAccepted事件的回调监听,等待对端连接。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'connectionAccepted',收到对端连接,触发该事件。 |
| callback | Callback<[Connection](#connection)> | 是 | 注册的回调函数。[Connection](#connection)返回的连接对象。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Parameter invalid. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
// 使用服务名构造Server
let server: linkEnhance.Server = linkEnhance.createServer(name);
// 订阅服务接收事件
server.on('connectionAccepted', (connection: linkEnhance.Connection): void => {
hilog.info(0x0000, TAG, 'serverOnCallback = ' + JSON.stringify(connection));
});
// 启动服务
server.start();
} catch (err) {
hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### off('connectionAccepted')
off(type: 'connectionAccepted', callback?: Callback<Connection>): void
取消注册connectionAccepted事件的回调监听。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'connectionAccepted',收到对端连接,触发该事件。 |
| callback | Callback<[Connection](#connection)> | 否 | 注册的回调函数。[Connection](#connection)返回的连接对象。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Parameter invalid. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
// 使用服务名构造Server
let server: linkEnhance.Server = linkEnhance.createServer(name);
server.on('connectionAccepted', (connection: linkEnhance.Connection): void => {
hilog.info(0x0000, TAG, 'accpet new connection');
});
// 取消订阅服务接收
server.off('connectionAccepted', (connection: linkEnhance.Connection): void => {
hilog.info(0x0000, TAG, 'accpet new connection');
});
} catch (err) {
hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### on('serverStopped')
on(type: 'serverStopped', callback: Callback<number>): void
在创建服务成功后,注册serverStopped回调,监听服务异常停止。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'serverStopped',底层服务异常时,触发该事件。 |
| callback | Callback<number> | 是 | 注册的回调函数,number为返回的错误码。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Parameter invalid. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
// 使用服务名构造Server
let server: linkEnhance.Server = linkEnhance.createServer(name);
// 订阅服务停止
server.on('serverStopped', (reason: number): void => {
hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
});
// 启动服务
server.start();
} catch (err) {
hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### off('serverStopped')
off(type: 'serverStopped', callback?: Callback<number>): void
取消注册serverStopped事件的回调监听。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'serverStopped',底层服务异常时触发。 |
| callback | Callback<number> | 否 | 注册的回调函数,number为返回的错误码。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Parameter invalid. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let name: string = "demo";
hilog.info(0x0000, TAG, 'start sever name = ' + name);
// 使用服务名构造Server
let server: linkEnhance.Server = linkEnhance.createServer(name);
server.on('serverStopped', (reason: number): void => {
hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
});
// 取消订阅服务停止
server.off('serverStopped', (reason: number): void => {
hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
});
} catch (err) {
hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
## ConnectResult
客户端调用connect()后,返回的连接结果。
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
| 名称 | 类型 |只读 | 可选 | 说明 |
| ----------------- | ------ | ---- | ---- | ------------------ |
| deviceId | string | 否 |否 | 对端设备ID,成功返回对端设备的deviceId,失败返回空字符串。 |
| success | boolean | 否 |否 | 连接结果,true表示连接成功,false表示连接失败。 |
| reason | number | 否 |否 | 连接成功返回0,连接失败返回错误码:
- 32390200:表示客户端连接超时。
- 32390201:表示服务端服务未启动。
- 32390300:表示内部错误。
更多关于错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。 |
## Connection
连接对象,提供连接、断连、获取对端设备ID、发送数据、注册/取消注册回调等方法。
### connect()
connect(): void
在客户端执行,向服务端设备发起连接,最大连接个数限制为10。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390204 | The number of connection exceeds the limit. |
| 32390300 | Internal error. |
**示例:**
客户端设备上的应用在创建Connection对象成功后,调用connect()方法连接目标设备(即服务端)。
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
// 订阅连接结果
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
});
// 发起连接
connection.connect();
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### disconnect()
disconnect(): void
业务执行完毕后,双端任意设备可调用该接口断开连接。创建的connection对象仍有效,需要时可调用connect()重新连接。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
if (result.success) {
connection.disconnect();
}
});
connection.connect();
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### close()
close(): void
业务执行完毕后,任意设备可调用该接口销毁connection对象,释放资源。若需再次与对端设备交互,必须重新创建connection对象并调用`connect()`发起连接。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
if (result.success) {
connection.close();
}
});
connection.connect();
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### getPeerDeviceId()
getPeerDeviceId(): string
获取对端设备的deviceId,作为对端设备的标识符,连接成功后或者被连接成功后调用。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------- |
| string | 对端设备的deviceId,即对端设备的BLE MAC地址。如果获取失败返回空字符串。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.getPeerDeviceId();
hilog.info(0x0000, TAG, "peerDeviceId=%{public}s" + connection.getPeerDeviceId());
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### sendData()
sendData(data: ArrayBuffer): void
客户端连接成功后,可以向服务端发送数据。服务端接收到连接回调时,也可以向客户端发送数据。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------------------- | ---- | ----- |
| data | [ArrayBuffer](../../arkts-utils/arraybuffer-object.md) | 是 | 需要发送的数据,最大发送长度为1024字节。|
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390205 | Connection is not ready. |
| 32390206 | Invalid parameter. |
| 32390300 | Internal error. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
if (result.success) {
let len = 1;
let arraybuffer = new ArrayBuffer(len); // 创建需要发送的数据
connection.sendData(arraybuffer);
hilog.info(0x0000, TAG, "sendData data connection peerDeviceId=%{public}s" + connection.getPeerDeviceId());
connection.disconnect();
}
});
connection.connect();
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### on('connectResult')
on(type: 'connectResult', callback: Callback<ConnectResult>): void
注册connect事件的回调监听,通过回调函数获取连接结果。使用callback进行异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'connectResult',完成`connect()`调用,触发该事件。 |
| callback | Callback<[ConnectResult](#connectresult)> | 是 | 注册的回调函数。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
// 订阅连接结果
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
});
// 发起连接
connection.connect();
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### off('connectResult')
off(type: 'connectResult', callback?: Callback<ConnectResult>): void
取消connect事件的回调监听,使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'connectResult',完成`connect()`调用,触发该事件。 |
| callback | Callback<[ConnectResult](#connectresult)> | 否 | 注册的回调函数。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
});
// 取消订阅连接结果
connection.off('connectResult', (result: linkEnhance.ConnectResult): void => {
hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
});
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### on('disconnected')
on(type: 'disconnected', callback: Callback<number>): void
注册disconnected事件的回调监听,连接被动断开或者底层异常断开时触发该事件。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'disconnected',连接被动断开或底层异常断开时,触发该事件。 |
| callback | Callback<number> | 是 | 注册的回调函数,number为返回的错误码。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter.|
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
// 订阅断连通知
connection.on('disconnected', (number: number)=> {
hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
});
} catch (err) {
hilog.info(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### off('disconnected')
off(type: 'disconnected', callback?: Callback<number>): void
取消注册disconnected事件的回调监听。连接被动断开或底层异常断开时触发该事件,使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'disconnected',连接被动断开或底层异常断开时,触发该事件。 |
| callback | Callback<number> | 否 | 注册的回调函数。number为返回的错误码。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('disconnected', (number: number)=> {
hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
});
// 取消订阅断连通知
connection.off('disconnected', (number: number)=> {
hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
});
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### on('dataReceived')
on(type: 'dataReceived', callback: Callback<ArrayBuffer>): void
注册dataReceived事件的回调监听。使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'dataReceived',收到数据时,触发该事件。 |
| callback | Callback<[ArrayBuffer](../../arkts-utils/arraybuffer-object.md)> | 是 | 注册的回调函数。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.connect();
connection.on('dataReceived', (data: ArrayBuffer)=> {
hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
});
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```
### off('dataReceived')
off(type: 'dataReceived', callback?: Callback<ArrayBuffer>): void
取消dataReceived事件的回调监听,使用callback异步回调。
**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.DistributedSched.AppCollaboration
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ----- |
| type | string | 是 | 事件回调类型,支持的事件为'dataReceived',收到数据时,触发该事件。 |
| callback | Callback<[ArrayBuffer](../../arkts-utils/arraybuffer-object.md)> | 否 | 注册的回调函数。 |
**错误码:**
以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 201 | Permission denied.|
| 32390206 | Invalid parameter. |
**示例:**
```ts
import { linkEnhance } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG = "testDemo";
try {
let peerDeviceId: string = "00:11:22:33:44:55";
hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
connection.on('dataReceived', (data: ArrayBuffer)=> {
hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
});
connection.off('dataReceived', (data: ArrayBuffer)=> {
hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
});
} catch (err) {
hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
(err as BusinessError).message);
}
```