• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.net.webSocket (WebSocket连接)
2
3> **说明:**
4>
5> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
6
7
8使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket](#websocketcreatewebsocket6)方法创建[WebSocket](#websocket6)对象,然后通过[connect](#connect6)方法连接到服务器。
9当连接成功后,客户端会收到[open](#onopen6)事件的回调,之后客户端就可以通过[send](#send6)方法与服务器进行通信。
10当服务器发信息给客户端时,客户端会收到[message](#onmessage6)事件的回调。当客户端不要此连接时,可以通过调用[close](#close6)方法主动断开连接,之后客户端会收到[close](#onclose6)事件的回调。
11
12若在上述任一过程中发生错误,客户端会收到[error](#onerror6)事件的回调。
13
14## 导入模块
15
16```js
17import webSocket from '@ohos.net.webSocket';
18```
19
20## 完整示例
21
22```js
23import webSocket from '@ohos.net.webSocket';
24import { BusinessError } from '@ohos.base';
25
26let defaultIpAddress = "ws://";
27let ws = webSocket.createWebSocket();
28ws.on('open', (err:BusinessError, value: Object) => {
29  if (err != undefined) {
30    console.log(JSON.stringify(err));
31    return;
32  }
33  // 当收到on('open')事件时,可以通过send()方法与服务器进行通信
34  ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
35    if (!err) {
36      console.log("send success");
37    } else {
38      console.log("send fail, err:" + JSON.stringify(err));
39    }
40  });
41});
42ws.on('message', (err: BusinessError, value: string) => {
43  console.log("on message, message:" + value);
44  // 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接
45  if (value === 'bye') {
46    ws.close((err: BusinessError, value: boolean) => {
47      if (!err) {
48        console.log("close success");
49      } else {
50        console.log("close fail, err is " + JSON.stringify(err));
51      }
52    });
53  }
54});
55ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
56  console.log("on close, code is " + value.code + ", reason is " + value.reason);
57});
58ws.on('error', (err: BusinessError) => {
59  console.log("on error, error:" + JSON.stringify(err));
60});
61ws.connect(defaultIpAddress, (err: BusinessError, value: boolean) => {
62  if (!err) {
63    console.log("connect success");
64  } else {
65    console.log("connect fail, err:" + JSON.stringify(err));
66  }
67  ws.close((err: BusinessError) => {
68    if (!err) {
69      console.log("close success");
70    } else {
71      console.log("close fail, err is " + JSON.stringify(err));
72    }
73  });
74});
75```
76
77## webSocket.createWebSocket<sup>6+</sup>
78
79createWebSocket(): WebSocket
80
81创建一个WebSocket,里面包括建立连接、关闭连接、发送数据和订阅/取消订阅WebSocket连接的打开事件、接收到服务器消息事件、关闭事件和错误事件。
82
83**系统能力**:SystemCapability.Communication.NetStack
84
85**返回值:**
86
87| 类型                                | 说明                                                         |
88| :---------------------------------- | :----------------------------------------------------------- |
89| [WebSocket](#websocket6) | 返回一个WebSocket对象,里面包括connect、send、close、on和off方法。 |
90
91**示例:**
92
93```js
94let ws: webSocket = webSocket.createWebSocket();
95```
96
97## WebSocket<sup>6+</sup>
98
99在调用WebSocket的方法前,需要先通过[webSocket.createWebSocket](#websocketcreatewebsocket6)创建一个WebSocket。
100
101### connect<sup>6+</sup>
102
103connect(url: string, callback: AsyncCallback\<boolean\>): void
104
105根据URL地址,建立一个WebSocket连接,使用callback方式作为异步方法。
106
107> **说明:**
108> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
109
110**需要权限**:ohos.permission.INTERNET
111
112**系统能力**:SystemCapability.Communication.NetStack
113
114**参数:**
115
116| 参数名   | 类型                     | 必填 | 说明                         |
117| -------- | ------------------------ | ---- | ---------------------------- |
118| url      | string                   | 是   | 建立WebSocket连接的URL地址。 |
119| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                   |
120
121**错误码:**
122
123| 错误码ID | 错误信息                 |
124| ------- | ----------------------- |
125| 401     | Parameter error.        |
126| 201     | Permission denied.      |
127
128**示例:**
129
130```js
131import webSocket from '@ohos.net.webSocket';
132import { BusinessError } from '@ohos.base';
133
134let ws = webSocket.createWebSocket();
135let url = "ws://";
136ws.connect(url, (err: BusinessError, value: boolean) => {
137  if (!err) {
138    console.log("connect success");
139  } else {
140    console.log("connect fail, err:" + JSON.stringify(err));
141  }
142});
143```
144
145### connect<sup>6+</sup>
146
147connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback\<boolean\>): void
148
149根据URL地址和header,建立一个WebSocket连接,使用callback方式作为异步方法。
150
151> **说明:**
152> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
153
154**需要权限**:ohos.permission.INTERNET
155
156**系统能力**:SystemCapability.Communication.NetStack
157
158**参数:**
159
160| 参数名   | 类型                     | 必填 | 说明                                                    |
161| -------- | ------------------------ | ---- | ------------------------------------------------------- |
162| url      | string                   | 是   | 建立WebSocket连接的URL地址。                            |
163| options  | WebSocketRequestOptions  | 是   | 参考[WebSocketRequestOptions](#websocketrequestoptions)。 |
164| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                                              |
165
166**错误码:**
167
168| 错误码ID | 错误信息                 |
169| ------- | ----------------------- |
170| 401     | Parameter error.        |
171| 201     | Permission denied.      |
172
173**示例:**
174
175```js
176import webSocket from '@ohos.net.webSocket';
177import { BusinessError } from '@ohos.base';
178
179let ws = webSocket.createWebSocket();
180let header: Map<string, string>
181header.set("key", "value")
182header.set("key2", "value2")
183let url = "ws://"
184ws.connect(url, header as webSocket.WebSocketRequestOptions, (err: BusinessError, value: Object) => {
185  if (!err) {
186    console.log("connect success");
187  } else {
188    console.log("connect fail, err:" + JSON.stringify(err))
189  }
190});
191```
192
193### connect<sup>6+</sup>
194
195connect(url: string, options?: WebSocketRequestOptions): Promise\<boolean\>
196
197根据URL地址和header,建立一个WebSocket连接,使用Promise方式作为异步方法。
198
199> **说明:**
200> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
201
202**需要权限**:ohos.permission.INTERNET
203
204**系统能力**:SystemCapability.Communication.NetStack
205
206**参数:**
207
208| 参数名  | 类型                    | 必填 | 说明                                                    |
209| ------- | ----------------------- | ---- | ------------------------------------------------------- |
210| url     | string                  | 是   | 建立WebSocket连接的URL地址。                            |
211| options | WebSocketRequestOptions | 否   | 参考[WebSocketRequestOptions](#websocketrequestoptions)。 |
212
213**返回值:**
214
215| 类型               | 说明                              |
216| :----------------- | :-------------------------------- |
217| Promise\<boolean\> | 以Promise形式返回建立连接的结果。 |
218
219**错误码:**
220
221| 错误码ID | 错误信息                 |
222| ------- | ----------------------- |
223| 401     | Parameter error.        |
224| 201     | Permission denied.      |
225
226**示例:**
227
228```js
229import webSocket from '@ohos.net.webSocket';
230
231let ws = webSocket.createWebSocket();
232let url = "ws://"
233let promise = ws.connect(url);
234promise.then((value: boolean) => {
235  console.log("connect success")
236}).catch((err:string) => {
237  console.log("connect fail, error:" + JSON.stringify(err))
238});
239```
240
241### send<sup>6+</sup>
242
243send(data: string | ArrayBuffer, callback: AsyncCallback\<boolean\>): void
244
245通过WebSocket连接发送数据,使用callback方式作为异步方法。
246
247**需要权限**:ohos.permission.INTERNET
248
249**系统能力**:SystemCapability.Communication.NetStack
250
251**参数:**
252
253| 参数名   | 类型                     | 必填 | 说明         |
254| -------- | ------------------------ | ---- | ------------ |
255| data     | string \| ArrayBuffer | 是   | 发送的数据。<br>API 6及更早版本仅支持string类型。API 8起同时支持string和ArrayBuffer类型。 |
256| callback | AsyncCallback\<boolean\> | 是   | 回调函数。   |
257
258**错误码:**
259
260| 错误码ID | 错误信息                 |
261| ------- | ----------------------- |
262| 401     | Parameter error.        |
263| 201     | Permission denied.      |
264
265**示例:**
266
267```js
268import webSocket from '@ohos.net.webSocket';
269import { BusinessError } from '@ohos.base';
270
271let ws = webSocket.createWebSocket();
272let url = "ws://"
273ws.connect(url, (err: BusinessError, value: boolean) => {
274  ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
275    if (!err) {
276      console.log("send success");
277    } else {
278      console.log("send fail, err:" + JSON.stringify(err))
279    }
280  });
281});
282```
283
284### send<sup>6+</sup>
285
286send(data: string | ArrayBuffer): Promise\<boolean\>
287
288通过WebSocket连接发送数据,使用Promise方式作为异步方法。
289
290**需要权限**:ohos.permission.INTERNET
291
292**系统能力**:SystemCapability.Communication.NetStack
293
294**参数:**
295
296| 参数名 | 类型   | 必填 | 说明         |
297| ------ | ------ | ---- | ------------ |
298| data     | string \| ArrayBuffer | 是   | 发送的数据。<br>API 6及更早版本仅支持string类型。API 8起同时支持string和ArrayBuffer类型。 |
299
300**返回值:**
301
302| 类型               | 说明                              |
303| :----------------- | :-------------------------------- |
304| Promise\<boolean\> | 以Promise形式返回发送数据的结果。 |
305
306**错误码:**
307
308| 错误码ID | 错误信息                 |
309| ------- | ----------------------- |
310| 401     | Parameter error.        |
311| 201     | Permission denied.      |
312
313**示例:**
314
315```js
316import webSocket from '@ohos.net.webSocket';
317import { BusinessError } from '@ohos.base';
318
319let ws = webSocket.createWebSocket();
320let url = "ws://"
321ws.connect(url, (err: BusinessError, value: boolean) => {
322  let promise = ws.send("Hello, server!");
323  promise.then((value: boolean) => {
324    console.log("send success")
325  }).catch((err:string) => {
326    console.log("send fail, error:" + JSON.stringify(err))
327  });
328});
329```
330
331### close<sup>6+</sup>
332
333close(callback: AsyncCallback\<boolean\>): void
334
335关闭WebSocket连接,使用callback方式作为异步方法。
336
337**需要权限**:ohos.permission.INTERNET
338
339**系统能力**:SystemCapability.Communication.NetStack
340
341**参数:**
342
343| 参数名   | 类型                     | 必填 | 说明       |
344| -------- | ------------------------ | ---- | ---------- |
345| callback | AsyncCallback\<boolean\> | 是   | 回调函数。 |
346
347**错误码:**
348
349| 错误码ID | 错误信息                 |
350| ------- | ----------------------- |
351| 401     | Parameter error.        |
352| 201     | Permission denied.      |
353
354**示例:**
355
356```js
357import webSocket from '@ohos.net.webSocket';
358import { BusinessError } from '@ohos.base';
359
360let ws = webSocket.createWebSocket();
361ws.close((err: BusinessError) => {
362  if (!err) {
363    console.log("close success")
364  } else {
365    console.log("close fail, err is " + JSON.stringify(err))
366  }
367});
368```
369
370### close<sup>6+</sup>
371
372close(options: WebSocketCloseOptions, callback: AsyncCallback\<boolean\>): void
373
374根据可选参数code和reason,关闭WebSocket连接,使用callback方式作为异步方法。
375
376**需要权限**:ohos.permission.INTERNET
377
378**系统能力**:SystemCapability.Communication.NetStack
379
380**参数:**
381
382| 参数名   | 类型                     | 必填 | 说明                                                  |
383| -------- | ------------------------ | ---- | ----------------------------------------------------- |
384| options  | WebSocketCloseOptions    | 是   | 参考[WebSocketCloseOptions](#websocketcloseoptions)。 |
385| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                                            |
386
387**错误码:**
388
389| 错误码ID | 错误信息                 |
390| ------- | ----------------------- |
391| 401     | Parameter error.        |
392| 201     | Permission denied.      |
393
394**示例:**
395
396```js
397import webSocket from '@ohos.net.webSocket';
398import { BusinessError } from '@ohos.base';
399
400let ws = webSocket.createWebSocket();
401
402let options: webSocket.WebSocketCloseOptions
403options.code = 1000
404options.reason = "your reason"
405ws.close(options, (err: BusinessError) => {
406  if (!err) {
407    console.log("close success")
408  } else {
409    console.log("close fail, err is " + JSON.stringify(err))
410  }
411});
412```
413
414### close<sup>6+</sup>
415
416close(options?: WebSocketCloseOptions): Promise\<boolean\>
417
418根据可选参数code和reason,关闭WebSocket连接,使用Promise方式作为异步方法。
419
420**需要权限**:ohos.permission.INTERNET
421
422**系统能力**:SystemCapability.Communication.NetStack
423
424**参数:**
425
426| 参数名  | 类型                  | 必填 | 说明                                                  |
427| ------- | --------------------- | ---- | ----------------------------------------------------- |
428| options | WebSocketCloseOptions | 否   | 参考[WebSocketCloseOptions](#websocketcloseoptions)。 |
429
430**返回值:**
431
432| 类型               | 说明                              |
433| :----------------- | :-------------------------------- |
434| Promise\<boolean\> | 以Promise形式返回关闭连接的结果。 |
435
436**错误码:**
437
438| 错误码ID | 错误信息                 |
439| ------- | ----------------------- |
440| 401     | Parameter error.        |
441| 201     | Permission denied.      |
442
443**示例:**
444
445```js
446import webSocket from '@ohos.net.webSocket';
447
448let ws = webSocket.createWebSocket();
449let options: webSocket.WebSocketCloseOptions
450options.code = 1000
451options.reason = "your reason"
452let promise = ws.close();
453promise.then((value: boolean) => {
454  console.log("close success")
455}).catch((err:string) => {
456  console.log("close fail, err is " + JSON.stringify(err))
457});
458```
459
460### on('open')<sup>6+</sup>
461
462on(type: 'open', callback: AsyncCallback\<Object\>): void
463
464订阅WebSocket的打开事件,使用callback方式作为异步方法。
465
466**系统能力**:SystemCapability.Communication.NetStack
467
468**参数:**
469
470| 参数名   | 类型                    | 必填 | 说明                          |
471| -------- | ----------------------- | ---- | ----------------------------- |
472| type     | string                  | 是   | 'open':WebSocket的打开事件。 |
473| callback | AsyncCallback\<Object\> | 是   | 回调函数。                    |
474
475**示例:**
476
477```js
478import webSocket from '@ohos.net.webSocket';
479import { BusinessError, Callback } from '@ohos.base';
480
481let ws= webSocket.createWebSocket();
482class OutValue {
483  status: number = 0
484  message: string = ""
485}
486ws.on('open', (err: BusinessError, value: OutValue) => {
487  console.log("on open, status:" + value.status + ", message:" + value.message);
488});
489```
490
491### off('open')<sup>6+</sup>
492
493off(type: 'open', callback?: AsyncCallback\<Object\>): void
494
495取消订阅WebSocket的打开事件,使用callback方式作为异步方法。
496
497> **说明:**
498> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
499
500**系统能力**:SystemCapability.Communication.NetStack
501
502**参数:**
503
504| 参数名   | 类型                    | 必填 | 说明                          |
505| -------- | ----------------------- | ---- | ----------------------------- |
506| type     | string                  | 是   | 'open':WebSocket的打开事件。 |
507| callback | AsyncCallback\<Object\> | 否   | 回调函数。                    |
508
509**示例:**
510
511```js
512import webSocket from '@ohos.net.webSocket';
513import { BusinessError } from '@ohos.base';
514
515let ws = webSocket.createWebSocket();
516class OutValue {
517  status: number = 0
518  message: string = ""
519}
520let callback1 = (err: BusinessError, value: OutValue) => {
521  console.log("on open, status:" + value.status + ", message:" + value.message);
522}
523ws.on('open', callback1);
524// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅
525ws.off('open', callback1);
526```
527
528### on('message')<sup>6+</sup>
529
530on(type: 'message', callback: AsyncCallback\<string | ArrayBuffer\>): void
531
532订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。每个消息最大长度为4K,超过4K自动分片。
533
534> **说明:**
535> AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
536
537**系统能力**:SystemCapability.Communication.NetStack
538
539**参数:**
540
541| 参数名   | 类型                    | 必填 | 说明                                         |
542| -------- | ----------------------- | ---- | -------------------------------------------- |
543| type     | string                  | 是   | 'message':WebSocket的接收到服务器消息事件。 |
544| callback | AsyncCallback\<string \| ArrayBuffer <sup>8+</sup>\> | 是   | 回调函数。                                   |
545
546**示例:**
547
548```js
549import webSocket from '@ohos.net.webSocket';
550import { BusinessError } from '@ohos.base';
551
552let ws = webSocket.createWebSocket();
553ws.on('message', (err: BusinessError, value: string) => {
554  console.log("on message, message:" + value);
555});
556```
557
558### off('message')<sup>6+</sup>
559
560off(type: 'message', callback?: AsyncCallback\<string | ArrayBuffer\>): void
561
562取消订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。每个消息最大长度为4K,超过4K自动分片。
563
564> **说明:**
565> AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
566> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
567
568**系统能力**:SystemCapability.Communication.NetStack
569
570**参数:**
571
572| 参数名   | 类型                                                | 必填 | 说明                                         |
573| -------- | --------------------------------------------------- | ---- | -------------------------------------------- |
574| type     | string                                              | 是   | 'message':WebSocket的接收到服务器消息事件。 |
575| callback | AsyncCallback\<string \|ArrayBuffer <sup>8+</sup>\> | 否   | 回调函数。                                   |
576
577**示例:**
578
579```js
580import webSocket from '@ohos.net.webSocket';
581
582let ws = webSocket.createWebSocket();
583ws.off('message');
584```
585
586### on('close')<sup>6+</sup>
587
588on(type: 'close', callback: AsyncCallback\<CloseResult\>): void
589
590订阅WebSocket的关闭事件,使用callback方式作为异步方法。
591
592**系统能力**:SystemCapability.Communication.NetStack
593
594**参数:**
595
596| 参数名   | 类型                                            | 必填 | 说明                           |
597| -------- | ----------------------------------------------- | ---- | ------------------------------ |
598| type     | string                                          | 是   | 'close':WebSocket的关闭事件。 |
599| callback | AsyncCallback\<CloseResult\> | 是   | 回调函数。<br>close:close错误码,reason:错误码说明 |
600
601**示例:**
602
603```js
604import webSocket from '@ohos.net.webSocket';
605import { BusinessError } from '@ohos.base';
606
607let ws = webSocket.createWebSocket();
608ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
609  console.log("on close, code is " + value.code + ", reason is " + value.reason);
610});
611```
612
613### off('close')<sup>6+</sup>
614
615off(type: 'close', callback?: AsyncCallback\<CloseResult\>): void
616
617取消订阅WebSocket的关闭事件,使用callback方式作为异步方法。
618
619> **说明:**
620> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
621
622**系统能力**:SystemCapability.Communication.NetStack
623
624**参数:**
625
626| 参数名   | 类型                                            | 必填 | 说明                           |
627| -------- | ----------------------------------------------- | ---- | ------------------------------ |
628| type     | string                                          | 是   | 'close':WebSocket的关闭事件。 |
629| callback | AsyncCallback\<CloseResult\> | 否   | 回调函数。<br>close:close错误码,reason:错误码说明 |
630
631**示例:**
632
633```js
634import webSocket from '@ohos.net.webSocket';
635
636let ws = webSocket.createWebSocket();
637ws.off('close');
638```
639
640### on('error')<sup>6+</sup>
641
642on(type: 'error', callback: ErrorCallback): void
643
644订阅WebSocket的Error事件,使用callback方式作为异步方法。
645
646**系统能力**:SystemCapability.Communication.NetStack
647
648**参数:**
649
650| 参数名   | 类型          | 必填 | 说明                            |
651| -------- | ------------- | ---- | ------------------------------- |
652| type     | string        | 是   | 'error':WebSocket的Error事件。 |
653| callback | ErrorCallback | 是   | 回调函数。<br>常见错误码:200 |
654
655**示例:**
656
657```js
658import webSocket from '@ohos.net.webSocket';
659import { BusinessError } from '@ohos.base';
660
661let ws = webSocket.createWebSocket();
662ws.on('error', (err: BusinessError) => {
663  console.log("on error, error:" + JSON.stringify(err))
664});
665```
666
667### off('error')<sup>6+</sup>
668
669off(type: 'error', callback?: ErrorCallback): void
670
671取消订阅WebSocket的Error事件,使用callback方式作为异步方法。
672
673> **说明:**
674> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
675
676**系统能力**:SystemCapability.Communication.NetStack
677
678**参数:**
679
680| 参数名   | 类型          | 必填 | 说明                            |
681| -------- | ------------- | ---- | ------------------------------- |
682| type     | string        | 是   | 'error':WebSocket的Error事件。 |
683| callback | ErrorCallback | 否   | 回调函数。                      |
684
685**示例:**
686
687```js
688import webSocket from '@ohos.net.webSocket';
689let ws = webSocket.createWebSocket();
690ws.off('error');
691```
692
693### on('dataEnd')<sup>11+</sup>
694
695on(type: 'dataEnd', callback: Callback\<void\>): void
696
697订阅WebSocket的数据接收结束事件,使用callback方式作为异步方法。
698
699**系统能力**:SystemCapability.Communication.NetStack
700
701**参数:**
702
703| 参数名   |       类型        | 必填 |                  说明                   |
704| -------- | ---------------- | ---- | --------------------------------------- |
705| type     | string           | 是   | 'dataEnd':WebSocket的数据接收结束事件。 |
706| callback | Callback\<void\> | 是   | 回调函数。                              |
707
708**示例:**
709
710```js
711import webSocket from '@ohos.net.webSocket';
712import { BusinessError } from '@ohos.base';
713
714let ws = webSocket.createWebSocket();
715ws.on('dataEnd', (err: BusinessError) => {
716  console.log("on dataEnd, error:" + JSON.stringify(err))
717});
718```
719
720### off('dataEnd')<sup>11+</sup>
721
722off(type: 'dataEnd', callback?: Callback\<void\>): void
723
724取消订阅WebSocket的数据接收结束事件,使用callback方式作为异步方法。
725
726> **说明:**
727> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
728
729**系统能力**:SystemCapability.Communication.NetStack
730
731**参数:**
732
733| 参数名   |        类型       | 必填 |                说明                    |
734| -------- | ---------------- | ---- | -------------------------------------- |
735| type     | string           | 是   | 'dataEnd':WebSocket的数据接收结束事件。|
736| callback | Callback\<void\> | 否   | 回调函数。                             |
737
738**示例:**
739
740```js
741import webSocket from '@ohos.net.webSocket';
742let ws = webSocket.createWebSocket();
743ws.off('dataEnd');
744```
745
746## WebSocketRequestOptions
747
748建立WebSocket连接时,可选参数的类型和说明。
749
750**系统能力**:SystemCapability.Communication.NetStack
751
752| 名称 | 类型   | 必填 | 说明                                                         |
753| ------ | ------ | ---- | ------------------------------------------------------------ |
754| header | Object | 否   | 建立WebSocket连接可选参数,代表建立连接时携带的HTTP头信息。参数内容自定义,也可以不指定。 |
755
756## WebSocketCloseOptions
757
758关闭WebSocket连接时,可选参数的类型和说明。
759
760**系统能力**:SystemCapability.Communication.NetStack
761
762| 名称 | 类型   | 必填 | 说明                                                         |
763| ------ | ------ | ---- | ------------------------------------------------------------ |
764| code   | number | 否   | 错误码,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为1000。 |
765| reason | string | 否   | 原因值,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为空字符串("")。 |
766
767## CloseResult<sup>10+</sup>
768
769关闭WebSocket连接时,订阅close事件得到的关闭结果。
770
771**系统能力**:SystemCapability.Communication.NetStack
772
773| 名称 | 类型   | 必填 | 说明                                                         |
774| ------ | ------ | ---- | ------------------------------------------------------------ |
775| code   | number | 是   | 错误码,订阅close事件得到的关闭连接的错误码。 |
776| reason | string | 是   | 原因值,订阅close事件得到的关闭连接的错误原因。 |
777
778## close错误码说明
779
780发送给服务端的错误码可以自行定义,下面的列表仅供参考。
781
782**系统能力**:SystemCapability.Communication.NetStack
783
784| 值        | 说明               |
785| :-------- | :----------------- |
786| 1000      | 正常关闭           |
787| 1001      | 服务器主动关闭     |
788| 1002      | 协议错误           |
789| 1003      | 无法处理的数据类型 |
790| 1004~1015 | 保留值             |
791