js-apis-webSocket.md 19.7 KB
Newer Older
C
clevercong 已提交
1
# WebSocket连接
C
clevercong 已提交
2 3 4

>![](public_sys-resources/icon-note.gif) **说明:** 
>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
C
clevercong 已提交
5
>
C
clevercong 已提交
6

C
clevercong 已提交
7
使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket](#websocketcreatewebsocket)方法创建[WebSocket](#websocket)对象,然后通过[connect](#connect)方法连接到服务器。当连接成功后,客户端会收到[open](#onopen)事件的回调,之后客户端就可以通过[send](#send)方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到[message](#onmessage)事件的回调。当客户端不要此连接时,可以通过调用[close](#close)方法主动断开连接,之后客户端会收到[close](#onclose)事件的回调。
C
clevercong 已提交
8

C
clevercong 已提交
9
若在上述任一过程中发生错误,客户端会收到[error](#onerror)事件的回调。
C
clevercong 已提交
10 11


C
clevercong 已提交
12
## 导入模块
C
clevercong 已提交
13

Z
zengyawen 已提交
14
```js
C
clevercong 已提交
15 16 17
import webSocket from '@ohos.net.webSocket';
```

C
clevercong 已提交
18
## 完整示例
C
clevercong 已提交
19

Z
zengyawen 已提交
20
```js
C
clevercong 已提交
21 22 23 24 25
import webSocket from '@ohos.net.webSocket';

var defaultIpAddress = "ws://";
let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {
26
    console.log("on open, status:" + value['status'] + ", message:" + value['message']);
C
clevercong 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
    // 当收到on('open')事件时,可以通过send()方法与服务器进行通信
    ws.send("Hello, server!", (err, value) => {
        if (!err) {
            console.log("send success");
        } else {
            console.log("send fail, err:" + JSON.stringify(err));
        }
    });
});
ws.on('message', (err, value) => {
    console.log("on message, message:" + value);
    // 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接
    if (value === 'bye') {
        ws.close((err, value) => {
            if (!err) {
                console.log("close success");
            } else {
                console.log("close fail, err is " + JSON.stringify(err));
            }
        });
    }
});
ws.on('close', (err, value) => {
50
    console.log("on close, code is " + value.code + ", reason is " + value.reason);
C
clevercong 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63
});
ws.on('error', (err) => {
    console.log("on error, error:" + JSON.stringify(err));
});
ws.connect(defaultIpAddress, (err, value) => {
    if (!err) {
        console.log("connect success");
    } else {
        console.log("connect fail, err:" + JSON.stringify(err));
    }
});
```

C
clevercong 已提交
64
## webSocket.createWebSocket
C
clevercong 已提交
65 66 67 68 69

createWebSocket\(\): WebSocket

创建一个WebSocket,里面包括建立连接、关闭连接、发送数据和订阅/取消订阅WebSocket连接的打开事件、接收到服务器消息事件、关闭事件和错误事件。

C
clevercong 已提交
70
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
71

C
clevercong 已提交
72
**返回值:**
C
clevercong 已提交
73

C
clevercong 已提交
74 75
| 类型                                | 说明                                                         |
| :---------------------------------- | :----------------------------------------------------------- |
C
clevercong 已提交
76
| [WebSocket](#websocket) | 返回一个WebSocket对象,里面包括connect、send、close、on和off方法。 |
C
clevercong 已提交
77

C
clevercong 已提交
78
**示例:**
C
clevercong 已提交
79

Z
zengyawen 已提交
80
```js
C
clevercong 已提交
81 82
let ws = webSocket.createWebSocket();
```
C
clevercong 已提交
83 84


C
clevercong 已提交
85
## WebSocket
C
clevercong 已提交
86

Z
zengyawen 已提交
87
在调用WebSocket的方法前,需要先通过[webSocket.createWebSocket](#websocketcreatewebsocket)创建一个WebSocket。
C
clevercong 已提交
88

C
clevercong 已提交
89
### connect
C
clevercong 已提交
90 91 92 93 94

connect\(url: string, callback: AsyncCallback<boolean\>\): void

根据URL地址,建立一个WebSocket连接,使用callback方式作为异步方法。

C
clevercong 已提交
95 96
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
97
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
98

C
clevercong 已提交
99
**参数:**
C
clevercong 已提交
100

C
clevercong 已提交
101 102 103 104
| 参数名   | 类型                     | 必填 | 说明                         |
| -------- | ------------------------ | ---- | ---------------------------- |
| url      | string                   | 是   | 建立WebSocket连接的URL地址。 |
| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                   |
C
clevercong 已提交
105 106


C
clevercong 已提交
107
**示例:**
C
clevercong 已提交
108

Z
zengyawen 已提交
109
```js
C
clevercong 已提交
110 111 112 113 114 115 116 117 118 119
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {
	if (!err) {
		console.log("connect success");
	} else {
		console.log("connect fail, err:" + JSON.stringify(err))
	}
});
```
C
clevercong 已提交
120 121


C
clevercong 已提交
122
### connect
C
clevercong 已提交
123 124 125 126 127

connect\(url: string, options: WebSocketRequestOptions, callback: AsyncCallback<boolean\>\): void

根据URL地址和header,建立一个WebSocket连接,使用callback方式作为异步方法。

C
clevercong 已提交
128 129
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
130
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
131

C
clevercong 已提交
132
**参数:**
C
clevercong 已提交
133

C
clevercong 已提交
134 135 136
| 参数名   | 类型                     | 必填 | 说明                                                    |
| -------- | ------------------------ | ---- | ------------------------------------------------------- |
| url      | string                   | 是   | 建立WebSocket连接的URL地址。                            |
C
clevercong 已提交
137
| options  | WebSocketRequestOptions  | 是   | 参考[WebSocketRequestOptions](#websocketrequestoptions)。 |
C
clevercong 已提交
138
| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                                              |
C
clevercong 已提交
139 140


C
clevercong 已提交
141
**示例:**
C
clevercong 已提交
142

Z
zengyawen 已提交
143
```js
C
clevercong 已提交
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, {
	header: {
		"key": "value",
		"key2": "value2"
	}
}, (err, value) => {
	if (!err) {
		console.log("connect success");
	} else {
		console.log("connect fail, err:" + JSON.stringify(err))
	}
});
```
C
clevercong 已提交
159 160


C
clevercong 已提交
161
### connect
C
clevercong 已提交
162 163 164 165 166

connect\(url: string, options?: WebSocketRequestOptions\): Promise<boolean\>

根据URL地址和header,建立一个WebSocket连接,使用Promise方式作为异步方法。

C
clevercong 已提交
167 168
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
169
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
170

C
clevercong 已提交
171
**参数:**
C
clevercong 已提交
172

C
clevercong 已提交
173 174 175
| 参数名  | 类型                    | 必填 | 说明                                                    |
| ------- | ----------------------- | ---- | ------------------------------------------------------- |
| url     | string                  | 是   | 建立WebSocket连接的URL地址。                            |
C
clevercong 已提交
176
| options | WebSocketRequestOptions | 否   | 参考[WebSocketRequestOptions](#websocketrequestoptions)。 |
C
clevercong 已提交
177

C
clevercong 已提交
178
**返回值:**
C
clevercong 已提交
179

C
clevercong 已提交
180 181 182
| 类型               | 说明                              |
| :----------------- | :-------------------------------- |
| Promise\<boolean\> | 以Promise形式返回建立连接的结果。 |
C
clevercong 已提交
183

C
clevercong 已提交
184
**示例:**
C
clevercong 已提交
185

Z
zengyawen 已提交
186
```js
C
clevercong 已提交
187 188 189 190 191 192 193 194 195
let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.connect(url);
promise.then((value) => {
	console.log("connect success")
}).catch((err) => {
	console.log("connect fail, error:" + JSON.stringify(err))
});
```
C
clevercong 已提交
196 197


C
clevercong 已提交
198
### send
C
clevercong 已提交
199 200 201 202 203

send\(data: string | ArrayBuffer, callback: AsyncCallback<boolean\>\): void

通过WebSocket连接发送数据,使用callback方式作为异步方法。

C
clevercong 已提交
204 205
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
206
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
207

C
clevercong 已提交
208
**参数:**
C
clevercong 已提交
209

C
clevercong 已提交
210 211 212 213
| 参数名   | 类型                     | 必填 | 说明         |
| -------- | ------------------------ | ---- | ------------ |
| data     | string \| ArrayBuffer <sup>8+</sup> | 是   | 发送的数据。 |
| callback | AsyncCallback\<boolean\> | 是   | 回调函数。   |
C
clevercong 已提交
214

C
clevercong 已提交
215
**示例:**
C
clevercong 已提交
216

Z
zengyawen 已提交
217
```js
C
clevercong 已提交
218 219 220 221 222 223 224 225 226 227 228 229
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {
	ws.send("Hello, server!", (err, value) => {
		if (!err) {
			console.log("send success");
		} else {
			console.log("send fail, err:" + JSON.stringify(err))
		}
	});
});
```
C
clevercong 已提交
230 231


C
clevercong 已提交
232
### send
C
clevercong 已提交
233 234 235 236 237

send\(data: string | ArrayBuffer\): Promise<boolean\>

通过WebSocket连接发送数据,使用Promise方式作为异步方法。

C
clevercong 已提交
238 239
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
240
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
241

C
clevercong 已提交
242
**参数:**
C
clevercong 已提交
243

C
clevercong 已提交
244 245 246
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| data     | string \| ArrayBuffer <sup>8+</sup> | 是   | 发送的数据。 |
C
clevercong 已提交
247

C
clevercong 已提交
248
**返回值:**
C
clevercong 已提交
249

C
clevercong 已提交
250 251 252
| 类型               | 说明                              |
| :----------------- | :-------------------------------- |
| Promise\<boolean\> | 以Promise形式返回发送数据的结果。 |
C
clevercong 已提交
253

C
clevercong 已提交
254
**示例:**
C
clevercong 已提交
255

Z
zengyawen 已提交
256
```js
C
clevercong 已提交
257 258 259 260 261 262 263 264 265 266 267
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {
	let promise = ws.send("Hello, server!");
	promise.then((value) => {
		console.log("send success")
	}).catch((err) => {
		console.log("send fail, error:" + JSON.stringify(err))
	});
});
```
C
clevercong 已提交
268 269


C
clevercong 已提交
270
### close
C
clevercong 已提交
271 272 273 274 275

close\(callback: AsyncCallback<boolean\>\): void

关闭WebSocket连接,使用callback方式作为异步方法。

C
clevercong 已提交
276 277
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
278
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
279

C
clevercong 已提交
280
**参数:**
C
clevercong 已提交
281

C
clevercong 已提交
282 283 284
| 参数名   | 类型                     | 必填 | 说明       |
| -------- | ------------------------ | ---- | ---------- |
| callback | AsyncCallback\<boolean\> | 是   | 回调函数。 |
C
clevercong 已提交
285

C
clevercong 已提交
286
**示例:**
C
clevercong 已提交
287

Z
zengyawen 已提交
288
```js
C
clevercong 已提交
289 290 291 292 293 294 295 296 297 298
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close((err, value) => {
	if (!err) {
		console.log("close success")
	} else {
		console.log("close fail, err is " + JSON.stringify(err))
	}
});
```
C
clevercong 已提交
299 300


C
clevercong 已提交
301
### close
C
clevercong 已提交
302 303 304 305 306

close\(options: WebSocketCloseOptions, callback: AsyncCallback<boolean\>\): void

根据可选参数code和reason,关闭WebSocket连接,使用callback方式作为异步方法。

C
clevercong 已提交
307 308
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
309
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
310

C
clevercong 已提交
311
**参数:**
C
clevercong 已提交
312

C
clevercong 已提交
313 314
| 参数名   | 类型                     | 必填 | 说明                                                  |
| -------- | ------------------------ | ---- | ----------------------------------------------------- |
C
clevercong 已提交
315
| options  | WebSocketCloseOptions    | 是   | 参考[WebSocketCloseOptions](#websocketcloseoptions)。 |
C
clevercong 已提交
316
| callback | AsyncCallback\<boolean\> | 是   | 回调函数。                                            |
C
clevercong 已提交
317

C
clevercong 已提交
318
**示例:**
C
clevercong 已提交
319

Z
zengyawen 已提交
320
```js
C
clevercong 已提交
321 322 323 324 325 326 327 328 329 330 331 332 333
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close({
	code: 1000,
	reason: "your reason"
}, (err, value) => {
	if (!err) {
		console.log("close success")
	} else {
		console.log("close fail, err is " + JSON.stringify(err))
	}
});
```
C
clevercong 已提交
334 335


C
clevercong 已提交
336
### close
C
clevercong 已提交
337 338 339 340 341

close\(options?: WebSocketCloseOptions\): Promise<boolean\>

根据可选参数code和reason,关闭WebSocket连接,使用Promise方式作为异步方法。

C
clevercong 已提交
342 343
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
344
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
345

C
clevercong 已提交
346
**参数:**
C
clevercong 已提交
347

C
clevercong 已提交
348 349
| 参数名  | 类型                  | 必填 | 说明                                                  |
| ------- | --------------------- | ---- | ----------------------------------------------------- |
C
clevercong 已提交
350
| options | WebSocketCloseOptions | 否   | 参考[WebSocketCloseOptions](#websocketcloseoptions)。 |
C
clevercong 已提交
351

C
clevercong 已提交
352
**返回值:**
C
clevercong 已提交
353

C
clevercong 已提交
354 355 356
| 类型               | 说明                              |
| :----------------- | :-------------------------------- |
| Promise\<boolean\> | 以Promise形式返回关闭连接的结果。 |
C
clevercong 已提交
357

C
clevercong 已提交
358
**示例:**
C
clevercong 已提交
359

Z
zengyawen 已提交
360
```js
C
clevercong 已提交
361 362 363 364 365 366 367 368 369 370 371 372
let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.close({
	code: 1000,
	reason: "your reason"
});
promise.then((value) => {
	console.log("close success")
}).catch((err) => {
	console.log("close fail, err is " + JSON.stringify(err))
});
```
C
clevercong 已提交
373 374


C
clevercong 已提交
375
### on\('open'\)
C
clevercong 已提交
376 377 378 379 380

on\(type: 'open', callback: AsyncCallback<Object\>\): void

订阅WebSocket的打开事件,使用callback方式作为异步方法。

C
clevercong 已提交
381
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
382

C
clevercong 已提交
383
**参数:**
C
clevercong 已提交
384

C
clevercong 已提交
385 386 387 388
| 参数名   | 类型                    | 必填 | 说明                          |
| -------- | ----------------------- | ---- | ----------------------------- |
| type     | string                  | 是   | 'open':WebSocket的打开事件。 |
| callback | AsyncCallback\<Object\> | 是   | 回调函数。                    |
C
clevercong 已提交
389 390


C
clevercong 已提交
391
**示例:**
C
clevercong 已提交
392

Z
zengyawen 已提交
393
```js
C
clevercong 已提交
394 395
let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {
396
	console.log("on open, status:" + value['status'] + ", message:" + value['message']);
C
clevercong 已提交
397 398
});
```
C
clevercong 已提交
399 400


C
clevercong 已提交
401
### off\('open'\)
C
clevercong 已提交
402 403 404 405 406 407 408 409

off\(type: 'open', callback?: AsyncCallback<Object\>\): void

取消订阅WebSocket的打开事件,使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
410
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
411

C
clevercong 已提交
412
**参数:**
C
clevercong 已提交
413

C
clevercong 已提交
414 415 416 417
| 参数名   | 类型                    | 必填 | 说明                          |
| -------- | ----------------------- | ---- | ----------------------------- |
| type     | string                  | 是   | 'open':WebSocket的打开事件。 |
| callback | AsyncCallback\<Object\> | 否   | 回调函数。                    |
C
clevercong 已提交
418

C
clevercong 已提交
419
**示例:**
C
clevercong 已提交
420

Z
zengyawen 已提交
421
```js
C
clevercong 已提交
422 423
let ws = webSocket.createWebSocket();
let callback1 = (err, value) => {
424
	console.log("on open, status:" + value['status'] + ", message:" + value['message']);
C
clevercong 已提交
425 426 427 428 429
}
ws.on('open', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅
ws.off('open', callback1);
```
C
clevercong 已提交
430 431


C
clevercong 已提交
432
### on\('message'\)
C
clevercong 已提交
433 434 435 436 437 438 439 440

on\(type: 'message', callback: AsyncCallback<string | ArrayBuffer\>\): void

订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>AsyncCallback中的数据可以是字符串\(API 6\)或ArrayBuffer\(API 8\)。

C
clevercong 已提交
441
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
442

C
clevercong 已提交
443
**参数:**
C
clevercong 已提交
444

C
clevercong 已提交
445 446 447 448
| 参数名   | 类型                    | 必填 | 说明                                         |
| -------- | ----------------------- | ---- | -------------------------------------------- |
| type     | string                  | 是   | 'message':WebSocket的接收到服务器消息事件。 |
| callback | AsyncCallback\<string \| ArrayBuffer <sup>8+</sup>\> | 是   | 回调函数。                                   |
C
clevercong 已提交
449 450


C
clevercong 已提交
451
**示例:**
C
clevercong 已提交
452

Z
zengyawen 已提交
453
```js
C
clevercong 已提交
454 455 456 457 458
let ws = webSocket.createWebSocket();
ws.on('message', (err, value) => {
	console.log("on message, message:" + value);
});
```
C
clevercong 已提交
459 460


C
clevercong 已提交
461
### off\('message'\)
C
clevercong 已提交
462 463 464

off\(type: 'message', callback?: AsyncCallback<string | ArrayBuffer\>\): void

M
fix doc  
maosiping 已提交
465
取消订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。每个消息最大长度为4K,超过4K自动分片。
C
clevercong 已提交
466 467 468 469 470

>![](public_sys-resources/icon-note.gif) **说明:** 
>AsyncCallback中的数据可以是字符串\(API 6\)或ArrayBuffer\(API 8\)。
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
471
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
472

C
clevercong 已提交
473
**参数:**
C
clevercong 已提交
474

C
clevercong 已提交
475 476 477 478
| 参数名   | 类型                                                | 必填 | 说明                                         |
| -------- | --------------------------------------------------- | ---- | -------------------------------------------- |
| type     | string                                              | 是   | 'message':WebSocket的接收到服务器消息事件。 |
| callback | AsyncCallback\<string \|ArrayBuffer <sup>8+</sup>\> | 否   | 回调函数。                                   |
C
clevercong 已提交
479

C
clevercong 已提交
480
**示例:**
C
clevercong 已提交
481

Z
zengyawen 已提交
482
```js
C
clevercong 已提交
483 484 485
let ws = webSocket.createWebSocket();
ws.off('message');
```
C
clevercong 已提交
486 487


C
clevercong 已提交
488
### on\('close'\)
C
clevercong 已提交
489 490 491 492 493

on\(type: 'close', callback: AsyncCallback<\{ code: number, reason: string \}\>\): void

订阅WebSocket的关闭事件,使用callback方式作为异步方法。

C
clevercong 已提交
494
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
495

C
clevercong 已提交
496
**参数:**
C
clevercong 已提交
497

C
clevercong 已提交
498 499 500 501
| 参数名   | 类型                                            | 必填 | 说明                           |
| -------- | ----------------------------------------------- | ---- | ------------------------------ |
| type     | string                                          | 是   | 'close':WebSocket的关闭事件。 |
| callback | AsyncCallback<{ code: number, reason: string }> | 是   | 回调函数。                     |
C
clevercong 已提交
502

C
clevercong 已提交
503
**示例:**
C
clevercong 已提交
504

Z
zengyawen 已提交
505
```js
C
clevercong 已提交
506 507
let ws = webSocket.createWebSocket();
ws.on('close', (err, value) => {
508
	console.log("on close, code is " + value.code + ", reason is " + value.reason);
C
clevercong 已提交
509 510
});
```
C
clevercong 已提交
511 512


C
clevercong 已提交
513
### off\('close'\)
C
clevercong 已提交
514 515 516 517 518 519 520 521

off\(type: 'close', callback?: AsyncCallback<\{ code: number, reason: string \}\>\): void

取消订阅WebSocket的关闭事件,使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
522
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
523

C
clevercong 已提交
524
**参数:**
C
clevercong 已提交
525

C
clevercong 已提交
526 527 528 529
| 参数名   | 类型                                            | 必填 | 说明                           |
| -------- | ----------------------------------------------- | ---- | ------------------------------ |
| type     | string                                          | 是   | 'close':WebSocket的关闭事件。 |
| callback | AsyncCallback<{ code: number, reason: string }> | 否   | 回调函数。                     |
C
clevercong 已提交
530 531


C
clevercong 已提交
532
**示例:**
C
clevercong 已提交
533

Z
zengyawen 已提交
534
```js
C
clevercong 已提交
535 536 537
let ws = webSocket.createWebSocket();
ws.off('close');
```
C
clevercong 已提交
538 539


C
clevercong 已提交
540
### on\('error'\)
C
clevercong 已提交
541 542 543 544 545

on\(type: 'error', callback: ErrorCallback\): void

订阅WebSocket的Error事件,使用callback方式作为异步方法。

C
clevercong 已提交
546
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
547

C
clevercong 已提交
548
**参数:**
C
clevercong 已提交
549

C
clevercong 已提交
550 551 552 553
| 参数名   | 类型          | 必填 | 说明                            |
| -------- | ------------- | ---- | ------------------------------- |
| type     | string        | 是   | 'error':WebSocket的Error事件。 |
| callback | ErrorCallback | 是   | 回调函数。                      |
C
clevercong 已提交
554 555


C
clevercong 已提交
556
**示例:**
C
clevercong 已提交
557

Z
zengyawen 已提交
558
```js
C
clevercong 已提交
559 560 561 562 563
let ws = webSocket.createWebSocket();
ws.on('error', (err) => {
	console.log("on error, error:" + JSON.stringify(err))
});
```
C
clevercong 已提交
564 565


C
clevercong 已提交
566
### off\('error'\)
C
clevercong 已提交
567 568 569 570 571 572 573 574

off\(type: 'error', callback?: ErrorCallback\): void

取消订阅WebSocket的Error事件,使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
575
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
576

C
clevercong 已提交
577
**参数:**
C
clevercong 已提交
578

C
clevercong 已提交
579 580 581 582
| 参数名   | 类型          | 必填 | 说明                            |
| -------- | ------------- | ---- | ------------------------------- |
| type     | string        | 是   | 'error':WebSocket的Error事件。 |
| callback | ErrorCallback | 否   | 回调函数。                      |
C
clevercong 已提交
583

C
clevercong 已提交
584
**示例:**
C
clevercong 已提交
585

Z
zengyawen 已提交
586
```js
C
clevercong 已提交
587 588 589
let ws = webSocket.createWebSocket();
ws.off('error');
```
C
clevercong 已提交
590 591


C
clevercong 已提交
592
## WebSocketRequestOptions
C
clevercong 已提交
593 594 595

建立WebSocket连接时,可选参数的类型和说明。

C
clevercong 已提交
596 597
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
598 599 600 601 602
| 参数名 | 类型   | 必填 | 说明                                                         |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| header | Object | 否   | 建立WebSocket连接可选参数,代表建立连接时携带的HTTP头信息。参数内容自定义,也可以不指定。 |


C
clevercong 已提交
603
## WebSocketCloseOptions
C
clevercong 已提交
604 605 606

关闭WebSocket连接时,可选参数的类型和说明。

C
clevercong 已提交
607 608
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
609 610 611 612 613
| 参数名 | 类型   | 必填 | 说明                                                         |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| code   | number | 否   | 错误码,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为1000。 |
| reason | string | 否   | 原因值,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为空字符串("")。 |

C
clevercong 已提交
614
## close错误码说明
C
clevercong 已提交
615 616 617

发送给服务端的错误码可以自行定义,下面的列表仅供参考。

C
clevercong 已提交
618 619
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
620 621 622 623 624 625 626 627
| 值        | 说明               |
| :-------- | :----------------- |
| 1000      | 正常关闭           |
| 1001      | 服务器主动关闭     |
| 1002      | 协议错误           |
| 1003      | 无法处理的数据类型 |
| 1004~1015 | 保留值             |