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
>本接口在Openharmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
C
clevercong 已提交
7

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

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


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

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

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

Z
zengyawen 已提交
21
```js
C
clevercong 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
import webSocket from '@ohos.net.webSocket';

var defaultIpAddress = "ws://";
let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {
    console.log("on open, status:" + value.status + ", message:" + value.message);
    // 当收到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) => {
    console.log("on close, code is " + value.code + ", reason is " + value.reason);
});
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 已提交
65
## webSocket.createWebSocket
C
clevercong 已提交
66 67 68 69 70

createWebSocket\(\): WebSocket

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

Z
zengyawen 已提交
110
```js
C
clevercong 已提交
111 112 113 114 115 116 117 118 119 120
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 已提交
121 122


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

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

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

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

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

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

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


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

Z
zengyawen 已提交
144
```js
C
clevercong 已提交
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
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 已提交
160 161


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

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

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

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

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

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

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

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

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

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

Z
zengyawen 已提交
187
```js
C
clevercong 已提交
188 189 190 191 192 193 194 195 196
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 已提交
197 198


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

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

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

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

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

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

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

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

Z
zengyawen 已提交
218
```js
C
clevercong 已提交
219 220 221 222 223 224 225 226 227 228 229 230
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 已提交
231 232


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

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

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

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

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

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

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

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

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

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

Z
zengyawen 已提交
257
```js
C
clevercong 已提交
258 259 260 261 262 263 264 265 266 267 268
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 已提交
269 270


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

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

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

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

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

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

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

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

Z
zengyawen 已提交
289
```js
C
clevercong 已提交
290 291 292 293 294 295 296 297 298 299
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 已提交
300 301


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

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

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

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

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

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

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

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

Z
zengyawen 已提交
321
```js
C
clevercong 已提交
322 323 324 325 326 327 328 329 330 331 332 333 334
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 已提交
335 336


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

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

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

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

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

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

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

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

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

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

Z
zengyawen 已提交
361
```js
C
clevercong 已提交
362 363 364 365 366 367 368 369 370 371 372 373
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 已提交
374 375


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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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


C
clevercong 已提交
462
### off\('message'\)
C
clevercong 已提交
463 464 465 466 467 468 469 470 471

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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


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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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