• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.distributedsched.linkEnhance (增强连接)
2<!--Kit: Distributed Service Kit-->
3<!--Subsystem: DistributedSched-->
4<!--Owner: @wangJE-->
5<!--Designer: @lee_jet520-->
6<!--Tester: @Ytt-test-->
7<!--Adviser: @w_Machine_cc-->
8linkEnhance模块提供高效的蓝牙连接和数据传输功能,增强设备间连接的稳定性。使用多通道合并算法,增加设备间连接数,提升跨设备数据传输能力,改善用户使用体验。
9
10> **说明:**
11>
12> 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
13
14## 导入模块
15
16```js
17import { linkEnhance } from '@kit.DistributedServiceKit';
18```
19
20## linkEnhance.createServer
21
22createServer(name:&nbsp;string):&nbsp;Server
23
24在服务端设备上,应用创建服务。通过start()开启后,该设备可作为服务端被其他设备连接。
25
26**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
27
28**系统能力**:SystemCapability.DistributedSched.AppCollaboration
29
30**参数:**
31
32| 参数名       | 类型                                       | 必填   | 说明       |
33| --------- | ---------------------------------------- | ---- | -------- |
34| name | string  | 是    | 自定义的非空字符串,标识应用的服务名,最大长度255字节。  |
35
36**返回值:**
37
38| 类型                  | 说明               |
39| ------------------- | ---------------- |
40| [Server](#server) | 创建成功的服务对象。 |
41
42**错误码:**
43
44以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
45
46| 错误码ID | 错误信息 |
47| ------- | -------------------------------- |
48| 201      | Permission denied.|
49| 32390203      | Duplicate server name.|
50| 32390206 | Invalid parameter.  |
51
52**示例:**
53
54```ts
55import { linkEnhance } from '@kit.DistributedServiceKit';
56import { BusinessError } from '@kit.BasicServicesKit';
57import { hilog } from '@kit.PerformanceAnalysisKit';
58const TAG = "testDemo";
59
60try {
61  let name:string = "demo";
62  hilog.info(0x0000, TAG, 'start sever name = ' + name);
63  // 使用服务名构造Server
64  let server: linkEnhance.Server = linkEnhance.createServer(name);
65} catch (err) {
66  hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
67  (err as BusinessError).message);
68}
69```
70
71## linkEnhance.createConnection
72
73createConnection(deviceId:&nbsp;string,&nbsp;name:&nbsp;string):&nbsp;Connection
74
75作为客户端的设备创建连接对象,以便后续向服务端设备发起连接。
76
77**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
78
79**系统能力**:SystemCapability.DistributedSched.AppCollaboration
80
81**参数:**
82
83| 参数名       | 类型                                      | 必填   | 说明        |
84| --------- | --------------------------------------- | ---- | --------- |
85| deviceId  | string | 是    | 连接的目标设备的deviceId,即对端设备的BLE MAC地址。BLE MAC的获取方法,请参考[查找设备](../../connectivity/bluetooth/ble-development-guide.md)。|
86| name      | string | 是    | 连接的目标设备的服务名,非空字符串,最大长度255字节。|
87
88**返回值:**
89
90| 类型                  | 说明               |
91| ------------------- | ---------------- |
92| [Connection](#connection) | 创建成功的连接对象。 |
93
94**错误码:**
95
96以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
97
98| 错误码ID | 错误信息 |
99| ------- | -------------------------------- |
100| 201      | Permission denied.|
101| 32390206 | Invalid parameter.  |
102
103**示例:**
104
105 在客户端设备上,应用需要主动调用createConnection()接口创建连接对象。
106
107```ts
108import { linkEnhance } from '@kit.DistributedServiceKit';
109import { BusinessError } from '@kit.BasicServicesKit';
110import { hilog } from '@kit.PerformanceAnalysisKit';
111const TAG = "testDemo";
112
113try {
114  let peerDeviceId: string = "00:11:22:33:44:55";
115  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
116  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
117} catch (err) {
118  hilog.info(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
119  (err as BusinessError).message);
120}
121```
122## Server
123
124服务对象,提供启动服务、停止服务、关闭服务、注册/取消注册服务端回调等方法。
125
126以下方法,在服务端设备上执行。
127
128### start()
129
130start():&nbsp;void
131
132创建服务成功后,需要调用start()开启该服务,方可被客户端连接,最大服务个数为10。
133
134**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
135
136**系统能力**:SystemCapability.DistributedSched.AppCollaboration
137
138**错误码:**
139
140以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
141
142| 错误码ID | 错误信息 |
143| ------- | -------------------------------- |
144| 201      | Permission denied.|
145| 32390202 | The number of servers exceeds the limit. |
146| 32390300 | Internal error. |
147
148**示例:**
149
150```ts
151import { linkEnhance } from '@kit.DistributedServiceKit';
152import { BusinessError } from '@kit.BasicServicesKit';
153import { hilog } from '@kit.PerformanceAnalysisKit';
154const TAG = "testDemo";
155
156try {
157  let name: string = "demo";
158  hilog.info(0x0000, TAG, 'start sever name = ' + name);
159  let server: linkEnhance.Server = linkEnhance.createServer(name);
160  server.start();
161} catch (err) {
162  hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
163  (err as BusinessError).message);
164}
165```
166### stop()
167
168stop():&nbsp;void
169
170使用完服务时,调用`stop`停止服务,停止后可以调用`start`重新开启服务。
171
172**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
173
174**系统能力**:SystemCapability.DistributedSched.AppCollaboration
175
176**错误码:**
177
178以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
179
180| 错误码ID | 错误信息 |
181| ------- | -------------------------------- |
182| 201      | Permission denied.|
183
184**示例:**
185
186```ts
187import { linkEnhance } from '@kit.DistributedServiceKit';
188import { BusinessError } from '@kit.BasicServicesKit';
189import { hilog } from '@kit.PerformanceAnalysisKit';
190const TAG = "testDemo";
191
192try {
193  let name: string = "demo";
194  hilog.info(0x0000, TAG, 'start sever name = ' + name);
195  let server: linkEnhance.Server = linkEnhance.createServer(name);
196  server.start();
197  server.stop();
198} catch (err) {
199  hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
200  (err as BusinessError).message);
201}
202```
203
204### close()
205
206close():&nbsp;void
207
208当业务执行完毕,服务端清理资源时,调用close()方法,销毁Server对象,释放相关资源。之后如果再次与对端设备交互,需要重新创建Server对象。
209
210**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
211
212**系统能力**:SystemCapability.DistributedSched.AppCollaboration
213
214**错误码:**
215
216以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
217
218| 错误码ID | 错误信息 |
219| ------- | -------------------------------- |
220| 201      | Permission denied.|
221
222**示例:**
223
224```ts
225import { linkEnhance } from '@kit.DistributedServiceKit';
226import { BusinessError } from '@kit.BasicServicesKit';
227import { hilog } from '@kit.PerformanceAnalysisKit';
228const TAG = "testDemo";
229
230try {
231  let name: string = "demo";
232  hilog.info(0x0000, TAG, 'start sever name = ' + name);
233  let server: linkEnhance.Server = linkEnhance.createServer(name);
234  server.start();
235  server.close();
236} catch (err) {
237  hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
238  (err as BusinessError).message);
239}
240```
241### on('connectionAccepted')
242
243on(type: 'connectionAccepted', callback: Callback&lt;Connection&gt;): void
244
245创建服务成功后,注册connectionAccepted事件的回调监听,等待对端连接。使用callback异步回调。
246
247**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
248
249**系统能力**:SystemCapability.DistributedSched.AppCollaboration
250
251**参数:**
252
253| 参数名       | 类型                                    | 必填   | 说明    |
254| --------- | ------------------------------------- | ---- | ----- |
255| type | string  | 是    |   事件回调类型,支持的事件为'connectionAccepted',收到对端连接,触发该事件。   |
256| callback | Callback&lt;[Connection](#connection)&gt; | 是    | 注册的回调函数。[Connection](#connection)返回的连接对象。 |
257
258**错误码:**
259
260以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
261
262| 错误码ID | 错误信息 |
263| ------- | -------------------------------- |
264| 201      | Permission denied.|
265| 32390206 | Parameter invalid.  |
266
267**示例:**
268
269```ts
270import { linkEnhance } from '@kit.DistributedServiceKit';
271import { BusinessError } from '@kit.BasicServicesKit';
272import { hilog } from '@kit.PerformanceAnalysisKit';
273const TAG = "testDemo";
274
275try {
276  let name: string = "demo";
277  hilog.info(0x0000, TAG, 'start sever name = ' + name);
278  // 使用服务名构造Server
279  let server: linkEnhance.Server = linkEnhance.createServer(name);
280
281  // 订阅服务接收事件
282  server.on('connectionAccepted', (connection: linkEnhance.Connection): void => {
283      hilog.info(0x0000, TAG, 'serverOnCallback = ' + JSON.stringify(connection));
284  });
285  // 启动服务
286  server.start();
287} catch (err) {
288  hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
289  (err as BusinessError).message);
290}
291```
292### off('connectionAccepted')
293
294off(type: 'connectionAccepted', callback?: Callback&lt;Connection&gt;): void
295
296取消注册connectionAccepted事件的回调监听。使用callback异步回调。
297
298**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
299
300**系统能力**:SystemCapability.DistributedSched.AppCollaboration
301
302**参数:**
303
304| 参数名       | 类型                                    | 必填   | 说明    |
305| --------- | ------------------------------------- | ---- | ----- |
306| type | string  | 是    |   事件回调类型,支持的事件为'connectionAccepted',收到对端连接,触发该事件。   |
307| callback | Callback&lt;[Connection](#connection)&gt; | 否    | 注册的回调函数。[Connection](#connection)返回的连接对象。 |
308
309**错误码:**
310
311以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
312
313| 错误码ID | 错误信息 |
314| ------- | -------------------------------- |
315| 201      | Permission denied.|
316| 32390206 | Parameter invalid.  |
317
318**示例:**
319
320```ts
321import { linkEnhance } from '@kit.DistributedServiceKit';
322import { BusinessError } from '@kit.BasicServicesKit';
323import { hilog } from '@kit.PerformanceAnalysisKit';
324const TAG = "testDemo";
325
326try {
327  let name: string = "demo";
328  hilog.info(0x0000, TAG, 'start sever name = ' + name);
329  // 使用服务名构造Server
330  let server: linkEnhance.Server = linkEnhance.createServer(name);
331  server.on('connectionAccepted', (connection: linkEnhance.Connection): void => {
332    hilog.info(0x0000, TAG, 'accpet new connection');
333  });
334  // 取消订阅服务接收
335  server.off('connectionAccepted', (connection: linkEnhance.Connection): void => {
336    hilog.info(0x0000, TAG, 'accpet new connection');
337  });
338} catch (err) {
339  hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
340  (err as BusinessError).message);
341}
342```
343
344### on('serverStopped')
345
346on(type: 'serverStopped', callback: Callback&lt;number&gt;): void
347
348在创建服务成功后,注册serverStopped回调,监听服务异常停止。使用callback异步回调。
349
350**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
351
352**系统能力**:SystemCapability.DistributedSched.AppCollaboration
353
354**参数:**
355
356| 参数名       | 类型                                    | 必填   | 说明    |
357| --------- | ------------------------------------- | ---- | ----- |
358| type | string  | 是    |   事件回调类型,支持的事件为'serverStopped',底层服务异常时,触发该事件。   |
359| callback | Callback&lt;number&gt; | 是    | 注册的回调函数,number为返回的错误码。 |
360
361**错误码:**
362
363以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
364
365| 错误码ID | 错误信息 |
366| ------- | -------------------------------- |
367| 201      | Permission denied.|
368| 32390206 | Parameter invalid.  |
369
370**示例:**
371
372```ts
373import { linkEnhance } from '@kit.DistributedServiceKit';
374import { BusinessError } from '@kit.BasicServicesKit';
375import { hilog } from '@kit.PerformanceAnalysisKit';
376const TAG = "testDemo";
377
378try {
379  let name: string = "demo";
380  hilog.info(0x0000, TAG, 'start sever name = ' + name);
381  // 使用服务名构造Server
382  let server: linkEnhance.Server = linkEnhance.createServer(name);
383
384  // 订阅服务停止
385  server.on('serverStopped', (reason: number): void => {
386    hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
387  });
388  // 启动服务
389  server.start();
390} catch (err) {
391  hilog.error(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
392  (err as BusinessError).message);
393}
394```
395
396### off('serverStopped')
397
398off(type: 'serverStopped', callback?: Callback&lt;number&gt;): void
399
400取消注册serverStopped事件的回调监听。使用callback异步回调。
401
402**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
403
404**系统能力**:SystemCapability.DistributedSched.AppCollaboration
405
406**参数:**
407
408| 参数名       | 类型                                    | 必填   | 说明    |
409| --------- | ------------------------------------- | ---- | ----- |
410| type | string  | 是    |   事件回调类型,支持的事件为'serverStopped',底层服务异常时触发。   |
411| callback | Callback&lt;number&gt; | 否    | 注册的回调函数,number为返回的错误码。 |
412
413**错误码:**
414
415以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
416
417| 错误码ID | 错误信息 |
418| ------- | -------------------------------- |
419| 201      | Permission denied.|
420| 32390206 | Parameter invalid.  |
421
422**示例:**
423
424```ts
425import { linkEnhance } from '@kit.DistributedServiceKit';
426import { BusinessError } from '@kit.BasicServicesKit';
427import { hilog } from '@kit.PerformanceAnalysisKit';
428const TAG = "testDemo";
429
430try {
431  let name: string = "demo";
432  hilog.info(0x0000, TAG, 'start sever name = ' + name);
433  // 使用服务名构造Server
434  let server: linkEnhance.Server = linkEnhance.createServer(name);
435  server.on('serverStopped', (reason: number): void => {
436    hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
437  });
438  // 取消订阅服务停止
439  server.off('serverStopped', (reason: number): void => {
440    hilog.info(0x0000, TAG, 'serverStopped, reason= ' + reason);
441  });
442} catch (err) {
443  hilog.info(0x0000, TAG, 'start sever errCode: ' + (err as BusinessError).code + ', errMessage: ' +
444  (err as BusinessError).message);
445}
446```
447## ConnectResult
448
449客户端调用connect()后,返回的连接结果。
450
451**系统能力**:SystemCapability.DistributedSched.AppCollaboration
452
453| 名称                    | 类型       |只读   | 可选   | 说明                 |
454| ----------------- | ------ | ----  | ---- | ------------------ |
455| deviceId          | string | 否    |否    | 对端设备ID,成功返回对端设备的deviceId,失败返回空字符串。     |
456| success           | boolean | 否    |否   | 连接结果,true表示连接成功,false表示连接失败。 |
457| reason            | number | 否    |否    | 连接成功返回0,连接失败返回错误码:<br>- 32390200:表示客户端连接超时。<br>- 32390201:表示服务端服务未启动。<br>- 32390300:表示内部错误。<br>更多关于错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。 |
458
459## Connection
460
461连接对象,提供连接、断连、获取对端设备ID、发送数据、注册/取消注册回调等方法。
462
463### connect()
464
465connect():&nbsp;void
466
467在客户端执行,向服务端设备发起连接,最大连接个数限制为10。
468
469**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
470
471**系统能力**:SystemCapability.DistributedSched.AppCollaboration
472
473
474**错误码:**
475
476以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
477
478| 错误码ID | 错误信息 |
479| ------- | -------------------------------- |
480| 201      | Permission denied.|
481| 32390204 | The number of connection exceeds the limit. |
482| 32390300 | Internal error. |
483
484**示例:**
485
486客户端设备上的应用在创建Connection对象成功后,调用connect()方法连接目标设备(即服务端)。
487
488```ts
489import { linkEnhance } from '@kit.DistributedServiceKit';
490import { BusinessError } from '@kit.BasicServicesKit';
491import { hilog } from '@kit.PerformanceAnalysisKit';
492const TAG = "testDemo";
493
494try {
495  let peerDeviceId: string = "00:11:22:33:44:55";
496  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
497  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
498  // 订阅连接结果
499  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
500    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
501  });
502  // 发起连接
503  connection.connect();
504} catch (err) {
505  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
506  (err as BusinessError).message);
507}
508```
509
510### disconnect()
511
512disconnect():&nbsp;void
513
514业务执行完毕后,双端任意设备可调用该接口断开连接。创建的connection对象仍有效,需要时可调用connect()重新连接。
515
516**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
517
518**系统能力**:SystemCapability.DistributedSched.AppCollaboration
519
520
521**错误码:**
522
523以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
524
525| 错误码ID | 错误信息 |
526| ------- | -------------------------------- |
527| 201      | Permission denied.|
528
529**示例:**
530
531```ts
532import { linkEnhance } from '@kit.DistributedServiceKit';
533import { BusinessError } from '@kit.BasicServicesKit';
534import { hilog } from '@kit.PerformanceAnalysisKit';
535const TAG = "testDemo";
536
537try {
538  let peerDeviceId: string = "00:11:22:33:44:55";
539  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
540  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
541  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
542    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
543    if (result.success) {
544      connection.disconnect();
545    }
546  });
547  connection.connect();
548} catch (err) {
549    hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
550  (err as BusinessError).message);
551}
552```
553
554### close()
555
556close():&nbsp;void
557
558业务执行完毕后,任意设备可调用该接口销毁connection对象,释放资源。若需再次与对端设备交互,必须重新创建connection对象并调用`connect()`发起连接。
559
560**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
561
562**系统能力**:SystemCapability.DistributedSched.AppCollaboration
563
564**错误码:**
565
566以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
567
568| 错误码ID | 错误信息 |
569| ------- | -------------------------------- |
570| 201      | Permission denied.|
571
572
573**示例:**
574
575```ts
576import { linkEnhance } from '@kit.DistributedServiceKit';
577import { BusinessError } from '@kit.BasicServicesKit';
578import { hilog } from '@kit.PerformanceAnalysisKit';
579const TAG = "testDemo";
580
581try {
582  let peerDeviceId: string = "00:11:22:33:44:55";
583  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
584  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
585  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
586    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
587    if (result.success) {
588      connection.close();
589    }
590  });
591  connection.connect();
592} catch (err) {
593  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
594  (err as BusinessError).message);
595}
596```
597### getPeerDeviceId()
598
599getPeerDeviceId():&nbsp;string
600
601获取对端设备的deviceId,作为对端设备的标识符,连接成功后或者被连接成功后调用。
602
603**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
604
605**系统能力**:SystemCapability.DistributedSched.AppCollaboration
606
607
608**返回值:**
609
610| 类型                  | 说明               |
611| ------------------- | ---------------- |
612| string | 对端设备的deviceId,即对端设备的BLE MAC地址。如果获取失败返回空字符串。 |
613
614
615**错误码:**
616
617以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
618
619| 错误码ID | 错误信息 |
620| ------- | -------------------------------- |
621| 201      | Permission denied.|
622
623**示例:**
624
625```ts
626import { linkEnhance } from '@kit.DistributedServiceKit';
627import { BusinessError } from '@kit.BasicServicesKit';
628import { hilog } from '@kit.PerformanceAnalysisKit';
629const TAG = "testDemo";
630
631try {
632  let peerDeviceId: string = "00:11:22:33:44:55";
633  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
634  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
635  connection.getPeerDeviceId();
636  hilog.info(0x0000, TAG, "peerDeviceId=%{public}s" + connection.getPeerDeviceId());
637} catch (err) {
638  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
639  (err as BusinessError).message);
640}
641```
642
643### sendData()
644
645sendData(data:&nbsp;ArrayBuffer):&nbsp;void
646
647客户端连接成功后,可以向服务端发送数据。服务端接收到连接回调时,也可以向客户端发送数据。
648
649**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
650
651**系统能力**:SystemCapability.DistributedSched.AppCollaboration
652
653**参数:**
654
655| 参数名       | 类型                                      | 必填   | 说明    |
656| --------- | --------------------------------------- | ---- | ----- |
657| data | [ArrayBuffer](../../arkts-utils/arraybuffer-object.md) | 是    | 需要发送的数据,最大发送长度为1024字节。|
658
659**错误码:**
660
661以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
662
663| 错误码ID | 错误信息 |
664| ------- | -------------------------------- |
665| 201      | Permission denied.|
666| 32390205 | Connection is not ready. |
667| 32390206 | Invalid parameter.  |
668| 32390300 | Internal error. |
669
670**示例:**
671
672```ts
673import { linkEnhance } from '@kit.DistributedServiceKit';
674import { BusinessError } from '@kit.BasicServicesKit';
675import { hilog } from '@kit.PerformanceAnalysisKit';
676const TAG = "testDemo";
677
678try {
679  let peerDeviceId: string = "00:11:22:33:44:55";
680  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
681  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
682  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
683    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
684    if (result.success) {
685      let len = 1;
686      let arraybuffer = new ArrayBuffer(len); // 创建需要发送的数据
687      connection.sendData(arraybuffer);
688      hilog.info(0x0000, TAG, "sendData data connection peerDeviceId=%{public}s" + connection.getPeerDeviceId());
689      connection.disconnect();
690    }
691  });
692  connection.connect();
693} catch (err) {
694  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
695  (err as BusinessError).message);
696}
697```
698
699### on('connectResult')
700
701on(type: 'connectResult', callback: Callback&lt;ConnectResult&gt;): void
702
703注册connect事件的回调监听,通过回调函数获取连接结果。使用callback进行异步回调。
704
705**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
706
707**系统能力**:SystemCapability.DistributedSched.AppCollaboration
708
709**参数:**
710
711| 参数名       | 类型                                    | 必填   | 说明    |
712| --------- | ------------------------------------- | ---- | ----- |
713| type | string  | 是    |   事件回调类型,支持的事件为'connectResult',完成`connect()`调用,触发该事件。   |
714| callback | Callback&lt;[ConnectResult](#connectresult)&gt; | 是    | 注册的回调函数。    |
715
716**错误码:**
717
718以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
719
720| 错误码ID | 错误信息 |
721| ------- | -------------------------------- |
722| 201      | Permission denied.|
723| 32390206 | Invalid parameter.|
724
725**示例:**
726
727```ts
728import { linkEnhance } from '@kit.DistributedServiceKit';
729import { BusinessError } from '@kit.BasicServicesKit';
730import { hilog } from '@kit.PerformanceAnalysisKit';
731const TAG = "testDemo";
732
733try {
734  let peerDeviceId: string = "00:11:22:33:44:55";
735  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
736  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
737  // 订阅连接结果
738  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
739      hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
740  });
741
742  // 发起连接
743  connection.connect();
744} catch (err) {
745  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
746  (err as BusinessError).message);
747}
748```
749
750### off('connectResult')
751
752off(type: 'connectResult', callback?: Callback&lt;ConnectResult&gt;): void
753
754取消connect事件的回调监听,使用callback异步回调。
755
756**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
757
758**系统能力**:SystemCapability.DistributedSched.AppCollaboration
759
760**参数:**
761
762| 参数名       | 类型                                    | 必填   | 说明    |
763| --------- | ------------------------------------- | ---- | ----- |
764| type | string  | 是    |   事件回调类型,支持的事件为'connectResult',完成`connect()`调用,触发该事件。   |
765| callback | Callback&lt;[ConnectResult](#connectresult)&gt; | 否    | 注册的回调函数。    |
766
767**错误码:**
768
769以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
770
771| 错误码ID | 错误信息 |
772| ------- | -------------------------------- |
773| 201      | Permission denied.|
774| 32390206 | Invalid parameter. |
775
776**示例:**
777
778```ts
779import { linkEnhance } from '@kit.DistributedServiceKit';
780import { BusinessError } from '@kit.BasicServicesKit';
781import { hilog } from '@kit.PerformanceAnalysisKit';
782const TAG = "testDemo";
783
784try {
785  let peerDeviceId: string = "00:11:22:33:44:55";
786  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
787  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
788  connection.on('connectResult', (result: linkEnhance.ConnectResult): void => {
789    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
790  });
791  // 取消订阅连接结果
792  connection.off('connectResult', (result: linkEnhance.ConnectResult): void => {
793    hilog.info(0x0000, TAG, 'clientConnectResultCallback result = ' + result.success);
794  });
795} catch (err) {
796  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
797  (err as BusinessError).message);
798}
799```
800
801### on('disconnected')
802
803on(type: 'disconnected', callback: Callback&lt;number&gt;): void
804
805注册disconnected事件的回调监听,连接被动断开或者底层异常断开时触发该事件。使用callback异步回调。
806
807**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
808
809**系统能力**:SystemCapability.DistributedSched.AppCollaboration
810
811**参数:**
812
813| 参数名       | 类型                                    | 必填   | 说明    |
814| --------- | ------------------------------------- | ---- | ----- |
815| type | string  | 是    |   事件回调类型,支持的事件为'disconnected',连接被动断开或底层异常断开时,触发该事件。   |
816| callback | Callback&lt;number&gt; | 是    | 注册的回调函数,number为返回的错误码。  |
817
818**错误码:**
819
820以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
821
822| 错误码ID | 错误信息 |
823| ------- | -------------------------------- |
824| 201      | Permission denied.|
825| 32390206 | Invalid parameter.|
826
827**示例:**
828
829```ts
830import { linkEnhance } from '@kit.DistributedServiceKit';
831import { BusinessError } from '@kit.BasicServicesKit';
832import { hilog } from '@kit.PerformanceAnalysisKit';
833const TAG = "testDemo";
834
835try {
836  let peerDeviceId: string = "00:11:22:33:44:55";
837  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
838  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
839  // 订阅断连通知
840  connection.on('disconnected', (number: number)=> {
841      hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
842  });
843} catch (err) {
844  hilog.info(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
845  (err as BusinessError).message);
846}
847```
848
849### off('disconnected')
850
851off(type: 'disconnected', callback?: Callback&lt;number&gt;): void
852
853取消注册disconnected事件的回调监听。连接被动断开或底层异常断开时触发该事件,使用callback异步回调。
854
855**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
856
857**系统能力**:SystemCapability.DistributedSched.AppCollaboration
858
859**参数:**
860
861| 参数名       | 类型                                    | 必填   | 说明    |
862| --------- | ------------------------------------- | ---- | ----- |
863| type | string  | 是    |   事件回调类型,支持的事件为'disconnected',连接被动断开或底层异常断开时,触发该事件。   |
864| callback | Callback&lt;number&gt; | 否   | 注册的回调函数。number为返回的错误码。   |
865
866**错误码:**
867
868以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
869
870| 错误码ID | 错误信息 |
871| ------- | -------------------------------- |
872| 201      | Permission denied.|
873| 32390206 | Invalid parameter. |
874
875**示例:**
876
877```ts
878import { linkEnhance } from '@kit.DistributedServiceKit';
879import { BusinessError } from '@kit.BasicServicesKit';
880import { hilog } from '@kit.PerformanceAnalysisKit';
881const TAG = "testDemo";
882
883try {
884  let peerDeviceId: string = "00:11:22:33:44:55";
885  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
886  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
887  connection.on('disconnected', (number: number)=> {
888      hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
889  });
890  // 取消订阅断连通知
891  connection.off('disconnected', (number: number)=> {
892      hilog.info(0x0000, TAG, 'connection disconnected reason = ' + number);
893  });
894} catch (err) {
895  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
896  (err as BusinessError).message);
897}
898```
899
900### on('dataReceived')
901
902on(type: 'dataReceived', callback: Callback&lt;ArrayBuffer&gt;): void
903
904注册dataReceived事件的回调监听。使用callback异步回调。
905
906**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
907
908**系统能力**:SystemCapability.DistributedSched.AppCollaboration
909
910**参数:**
911
912| 参数名       | 类型                                    | 必填   | 说明    |
913| --------- | ------------------------------------- | ---- | ----- |
914| type | string  | 是    |   事件回调类型,支持的事件为'dataReceived',收到数据时,触发该事件。   |
915| callback | Callback&lt;[ArrayBuffer](../../arkts-utils/arraybuffer-object.md)&gt; | 是    | 注册的回调函数。 |
916
917**错误码:**
918
919以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
920
921| 错误码ID | 错误信息 |
922| ------- | -------------------------------- |
923| 201      | Permission denied.|
924| 32390206 | Invalid parameter.  |
925
926**示例:**
927
928```ts
929import { linkEnhance } from '@kit.DistributedServiceKit';
930import { BusinessError } from '@kit.BasicServicesKit';
931import { hilog } from '@kit.PerformanceAnalysisKit';
932const TAG = "testDemo";
933
934try {
935  let peerDeviceId: string = "00:11:22:33:44:55";
936  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
937  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
938  connection.connect();
939  connection.on('dataReceived', (data: ArrayBuffer)=> {
940      hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
941  });
942} catch (err) {
943  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
944  (err as BusinessError).message);
945}
946```
947### off('dataReceived')
948
949off(type: 'dataReceived', callback?: Callback&lt;ArrayBuffer&gt;): void
950
951取消dataReceived事件的回调监听,使用callback异步回调。
952
953**需要权限**:ohos.permission.DISTRIBUTED_DATASYNC
954
955**系统能力**:SystemCapability.DistributedSched.AppCollaboration
956
957**参数:**
958
959| 参数名       | 类型                                    | 必填   | 说明    |
960| --------- | ------------------------------------- | ---- | ----- |
961| type | string  | 是    |   事件回调类型,支持的事件为'dataReceived',收到数据时,触发该事件。   |
962| callback | Callback&lt;[ArrayBuffer](../../arkts-utils/arraybuffer-object.md)&gt; | 否    | 注册的回调函数。 |
963
964**错误码:**
965
966以下错误码的详细介绍请参考[增强连接错误码](errorcode-link-enhance.md)。
967
968| 错误码ID | 错误信息 |
969| ------- | -------------------------------- |
970| 201      | Permission denied.|
971| 32390206 | Invalid parameter.  |
972
973**示例:**
974
975```ts
976import { linkEnhance } from '@kit.DistributedServiceKit';
977import { BusinessError } from '@kit.BasicServicesKit';
978import { hilog } from '@kit.PerformanceAnalysisKit';
979const TAG = "testDemo";
980
981try {
982  let peerDeviceId: string = "00:11:22:33:44:55";
983  hilog.info(0x0000, TAG, 'connection sever deviceId = ' + peerDeviceId);
984  let connection: linkEnhance.Connection = linkEnhance.createConnection(peerDeviceId, "demo");
985  connection.on('dataReceived', (data: ArrayBuffer)=> {
986      hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
987  });
988  connection.off('dataReceived', (data: ArrayBuffer)=> {
989      hilog.info(0x0000, TAG, 'recv dataLen = ' + data.byteLength);
990  });
991} catch (err) {
992  hilog.error(0x0000, TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' +
993  (err as BusinessError).message);
994}
995```