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