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