未验证 提交 75afe266 编写于 作者: O openharmony_ci 提交者: Gitee

!17222 Net Docs Update

Merge pull request !17222 from Yangys/master
......@@ -52,8 +52,7 @@ httpRequest.on('headersReceive', (header) => {
console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
"EXAMPLE_URL",
// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定"EXAMPLE_URL",
{
method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
// 开发者根据自身业务需要添加header字段
......@@ -122,7 +121,7 @@ httpRequest.on('dataEnd', () => {
});
// 用于订阅HTTP流式响应数据接收进度事件
httpRequest.on('dataProgress', (data) => {
console.log("dataProgress receiveSize:" + data.receiveSize+ ", totalSize:" + data.totalSize);
console.log("dataProgress receiveSize:" + data.receiveSize + ", totalSize:" + data.totalSize);
});
httpRequest.request2(
......@@ -163,6 +162,8 @@ httpRequest.request2(
```
## 相关实例
针对HTTP数据请求,有以下相关实例可供参考:
- [`Http:`数据请求(ArkTS)(API9))](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Connectivity/Http)
- [使用HTTP实现与服务端通信(ArkTS)(API9)](https://gitee.com/openharmony/codelabs/tree/master/NetworkManagement/SmartChatEtsOH)
\ No newline at end of file
# 网络连接管理
## 简介
网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。
> **说明:**
> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-connection.md)。
## 基本概念
- 网络生产者:数据网络的提供方,比如WiFi、蜂窝、Ethernet等。
- 网络消费者:数据网络的使用方,比如应用或系统服务。
- 网络探测:检测网络有效性,避免将网络从可用网络切换到不可用网络。内容包括绑定网络探测、DNS探测、HTTP探测及HTTPS探测。
- 网络优选:处理多网络共存时选择最优网络。在网络状态、网络信息及评分发生变化时被触发。
## 约束
- 开发语言:C++ JS
- 系统:linux内核
- 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 场景介绍
网络连接管理的典型场景有:
- 接收指定网络的状态变化通知
- 获取所有注册的网络
- 根据数据网络查询网络的连接信息
- 使用对应网络解析域名,获取所有IP
以下分别介绍具体开发方式。
## 接口说明
完整的JS API说明以及实例代码请参考:[网络连接管理](../reference/apis/js-apis-net-connection.md)
| 类型 | 接口 | 功能说明 |
......@@ -75,39 +82,41 @@
```js
// 引入包名
import connection from '@ohos.net.connection'
import connection from '@ohos.net.connection'
let netCap = {
let netCap = {
// 假设当前默认网络是WiFi,需要创建蜂窝网络连接,可指定网络类型为蜂窝网
bearerTypes: [connection.NetBearType.BEARER_CELLULAR],
// 指定网络能力为Internet
networkCap: [connection.NetCap.NET_CAPABILITY_INTERNET],
};
let netSpec = {
};
let netSpec = {
netCapabilities: netCap,
};
};
// 指定超时时间为10s(默认值为0)
let timeout = 10 * 1000;
// 指定超时时间为10s(默认值为0)
let timeout = 10 * 1000;
// 创建NetConnection对象
let conn = connection.createNetConnection(netSpec, timeout);
// 创建NetConnection对象
let conn = connection.createNetConnection(netSpec, timeout);
// 订阅事件,如果当前指定网络可用,通过on_netAvailable通知用户
conn.on('netAvailable', (data=> {
// 订阅事件,如果当前指定网络可用,通过on_netAvailable通知用户
conn.on('netAvailable', (data => {
console.log("net is available, netId is " + data.netId);
}));
}));
// 订阅事件,如果当前指定网络不可用,通过on_netUnavailable通知用户
conn.on('netUnavailable', (data=> {
// 订阅事件,如果当前指定网络不可用,通过on_netUnavailable通知用户
conn.on('netUnavailable', (data => {
console.log("net is unavailable, netId is " + data.netId);
}));
}));
// 订阅指定网络状态变化的通知
conn.register((err, data) => {});
// 订阅指定网络状态变化的通知
conn.register((err, data) => {
});
// 当不使用该网络时,可以调用该对象的unregister()方法,取消订阅
conn.unregister((err, data) => {});
// 当不使用该网络时,可以调用该对象的unregister()方法,取消订阅
conn.unregister((err, data) => {
});
```
## 获取所有注册的网络
......@@ -120,16 +129,16 @@
```js
// 引入包名
import connection from '@ohos.net.connection'
import connection from '@ohos.net.connection'
// 获取所有处于连接状态的网络列表
connection.getAllNets((err, data) => {
// 获取所有处于连接状态的网络列表
connection.getAllNets((err, data) => {
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
if (data) {
this.netList = data;
}
})
})
```
## 根据数据网络查询网络的能力信息及连接信息
......@@ -146,19 +155,19 @@
```js
// 引入包名
import connection from '@ohos.net.connection'
import connection from '@ohos.net.connection'
// 调用getDefaultNet方法,获取默认的数据网络(NetHandle)
connection.getDefaultNet((err, data) => {
// 调用getDefaultNet方法,获取默认的数据网络(NetHandle)
connection.getDefaultNet((err, data) => {
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
if (data) {
this.netHandle = data;
}
})
})
// 获取netHandle对应网络的能力信息。能力信息包含了网络类型、网络具体能力等网络信息
connection.getNetCapabilities(this.netHandle, (err, data) => {
// 获取netHandle对应网络的能力信息。能力信息包含了网络类型、网络具体能力等网络信息
connection.getNetCapabilities(this.netHandle, (err, data) => {
console.log(JSON.stringify(err));
// 获取网络类型(bearerTypes)
......@@ -194,24 +203,24 @@
console.log(JSON.stringify("NET_CAPABILITY_VALIDATED"));
}
}
})
})
// 获取netHandle对应网络的连接信息。连接信息包含了链路信息、路由信息等
connection.getConnectionProperties(this.netHandle, (err, data) => {
// 获取netHandle对应网络的连接信息。连接信息包含了链路信息、路由信息等
connection.getConnectionProperties(this.netHandle, (err, data) => {
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
})
})
// 调用getAllNets,获取所有处于连接状态的网络列表(Array<NetHandle>)
connection.getAllNets((err, data) => {
// 调用getAllNets,获取所有处于连接状态的网络列表(Array<NetHandle>)
connection.getAllNets((err, data) => {
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
if (data) {
this.netList = data;
}
})
})
for (let item of this.netList) {
for (let item of this.netList) {
// 循环获取网络列表每个netHandle对应网络的能力信息
connection.getNetCapabilities(item, (err, data) => {
console.log(JSON.stringify(err));
......@@ -223,7 +232,7 @@
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
})
}
}
```
## 使用对应网络解析域名,获取所有IP
......@@ -236,11 +245,11 @@
```js
// 引入包名
import connection from '@ohos.net.connection'
import connection from '@ohos.net.connection'
// 使用默认网络解析主机名以获取所有IP地址
connection.getAddressesByName(this.host, (err, data) => {
// 使用默认网络解析主机名以获取所有IP地址
connection.getAddressesByName(this.host, (err, data) => {
console.log(JSON.stringify(err));
console.log(JSON.stringify(data));
})
})
```
# 以太网连接
## 简介
以太网连接的功能是提供支持设备通过硬件接口,以插入网线的形式访问互联网的能力。
设备接入网线后,可以获取动态分配的IP地址,子网掩码,Gateway,DNS等一系列网络属性;通过静态模式,手动配置与获取设备的网络属性。
以太网连接的功能是提供支持设备通过硬件接口,以插入网线的形式访问互联网的能力。 设备接入网线后,可以获取动态分配的IP地址,子网掩码,Gateway,DNS等一系列网络属性;通过静态模式,手动配置与获取设备的网络属性。
> **说明:**
> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-ethernet.md)。
## 约束
- 开发语言:C++ JS
- 系统:linux内核
- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 场景介绍
以太网连接的典型场景有:
- DHCP模式,通过动态分配IP地址,子网掩码,Gateway,DNS等一系列网络属性,使能访问网络。
- 静态模式,通过静态配置IP地址,子网掩码,Gateway,DNS等一系列网络属性,使能访问网络。
以下分别介绍具体开发方式。
## 接口说明
完整的JS API说明以及实例代码请参考:[以太网连接](../reference/apis/js-apis-net-ethernet.md)
| 类型 | 接口 | 功能说明 |
......@@ -28,6 +32,8 @@
| ohos.net.ethernet | function getIfaceConfig(iface: string, callback: AsyncCallback\<InterfaceConfiguration>): void | 获取指定以太网的网络属性,iface为网口名称,调用callback |
| ohos.net.ethernet | function isIfaceActive(iface: string, callback: AsyncCallback\<number>): void | 判断指定网口是否已激活,iface为网卡名称(无参为是否有激活网口),调用callback |
| ohos.net.ethernet | function getAllActiveIfaces(callback: AsyncCallback\<Array\<string>>): void; | 获取所有活动的网络接口,调用callback |
| ohos.net.ethernet | function on(type: 'interfaceStateChange', callback: Callback\<{ iface: string, active: boolean }\>): void; | 注册网络接口监听函数 |
| ohos.net.ethernet | function off(type: 'interfaceStateChange', callback?: Callback\<{ iface: string, active: boolean }\>): void; | 解除注册网络接口监听函数 |
## 以太网连接-DHCP模式
......@@ -39,10 +45,10 @@
```js
// 从@ohos.net.ethernet中导入ethernet命名空间
import ethernet from '@ohos.net.ethernet'
import ethernet from '@ohos.net.ethernet'
// getAllActiveIfaces获取所有活动的网络设备名称
ethernet.getAllActiveIfaces((error, data) => {
// getAllActiveIfaces获取所有活动的网络设备名称
ethernet.getAllActiveIfaces((error, data) => {
if (error) {
console.log("getAllActiveIfaces callback error = " + error);
} else {
......@@ -51,19 +57,19 @@
console.log("getAllActiveIfaces callback = " + data[i]);
}
}
});
});
// isIfaceActive判断指定网口是否已激活
ethernet.isIfaceActive("eth0", (error, data) => {
// isIfaceActive判断指定网口是否已激活
ethernet.isIfaceActive("eth0", (error, data) => {
if (error) {
console.log("isIfaceActive callback error = " + error);
} else {
console.log("isIfaceActive callback = " + data);
}
});
});
// getIfaceConfig获取指定以太网的网络属性
ethernet.getIfaceConfig("eth0", (error, data) => {
// getIfaceConfig获取指定以太网的网络属性
ethernet.getIfaceConfig("eth0", (error, data) => {
if (error) {
console.log("getIfaceConfig callback error = " + error);
} else {
......@@ -75,8 +81,9 @@
console.log("getIfaceConfig callback dns0Addr = " + data.dns0Addr);
console.log("getIfaceConfig callback dns1Addr = " + data.dns1Addr);
}
});
});
```
## 以太网连接-静态模式
### 开发步骤
......@@ -90,10 +97,10 @@
```js
// 从@ohos.net.ethernet中导入ethernet命名空间
import ethernet from '@ohos.net.ethernet'
import ethernet from '@ohos.net.ethernet'
// getAllActiveIfaces获取所有活动的网络设备名称
ethernet.getAllActiveIfaces((error, data) => {
// getAllActiveIfaces获取所有活动的网络设备名称
ethernet.getAllActiveIfaces((error, data) => {
if (error) {
console.log("getAllActiveIfaces callback error = " + error);
} else {
......@@ -102,29 +109,31 @@
console.log("getAllActiveIfaces callback = " + data[i]);
}
}
});
});
// isIfaceActive判断指定网口是否已激活
ethernet.isIfaceActive("eth0", (error, data) => {
// isIfaceActive判断指定网口是否已激活
ethernet.isIfaceActive("eth0", (error, data) => {
if (error) {
console.log("isIfaceActive callback error = " + error);
} else {
console.log("isIfaceActive callback = " + data);
}
});
});
// setIfaceConfig配置指定以太网的网络属性
ethernet.setIfaceConfig("eth0", {mode:ethernet.STATIC,ipAddr:"192.168.xx.xx", routeAddr:"192.168.xx.xx",
gateAddr:"192.168.xx.xx", maskAddr:"255.255.xx.xx", dnsAddr0:"1.1.xx.xx", dnsAddr1:"2.2.xx.xx"},(error) => {
// setIfaceConfig配置指定以太网的网络属性
ethernet.setIfaceConfig("eth0", {
mode: ethernet.STATIC, ipAddr: "192.168.xx.xx", routeAddr: "192.168.xx.xx",
gateAddr: "192.168.xx.xx", maskAddr: "255.255.xx.xx", dnsAddr0: "1.1.xx.xx", dnsAddr1: "2.2.xx.xx"
}, (error) => {
if (error) {
console.log("setIfaceConfig callback error = " + error);
} else {
console.log("setIfaceConfig callback ok ");
}
});
});
// getIfaceConfig获取指定以太网的网络属性
ethernet.getIfaceConfig("eth0", (error, data) => {
// getIfaceConfig获取指定以太网的网络属性
ethernet.getIfaceConfig("eth0", (error, data) => {
if (error) {
console.log("getIfaceConfig callback error = " + error);
} else {
......@@ -136,5 +145,27 @@
console.log("getIfaceConfig callback dns0Addr = " + data.dns0Addr);
console.log("getIfaceConfig callback dns1Addr = " + data.dns1Addr);
}
});
});
```
## 监听网络设备接口状态变化
### 开发步骤
1. 从@ohos.net.ethernet中导入ethernet命名空间。
2. 调用该对象的on()方法,订阅interfaceStateChange事件。可以根据业务需要订阅此消息。
3. 订阅interfaceStateChange事件后,回调函数会在网卡设备的接口状态发生变化时触发。
4. 调用该对象的off()方法,取消订阅interfaceStateChange事件。
```js
// 从@ohos.net.ethernet中导入ethernet命名空间
import ethernet from '@ohos.net.ethernet'
// 订阅interfaceStateChange事件
ethernet.on('interfaceStateChange', ((data) => {
console.log(JSON.stringify(data));
}));
// 取消事件订阅
ethernet.off('interfaceStateChange');
```
\ No newline at end of file
# 网络共享
## 简介
网络共享管理分享设备已有网络给其他连接设备,支持Wi-Fi热点共享、蓝牙共享和USB共享,同时提供网络共享状态、共享流量查询功能。
> **说明:**
> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-sharing.md)。
## 基本概念
- WIFI共享:通过WIFI热点共享网络。
- 蓝牙共享:通过蓝牙共享网络。
- USB共享:通过USB共享网络。
## 约束
- 开发语言:C++ JS
- 系统:linux内核
- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 场景介绍
网络共享的典型场景有:
- 开启网络共享
- 停止网络共享
- 获取共享网络的数据流量
以下分别介绍具体开发方式。
## 接口说明
完整的JS API说明以及实例代码请参考:[网络共享](../reference/apis/js-apis-net-sharing.md)
| 类型 | 接口 | 功能说明 |
......@@ -54,18 +61,18 @@
```js
// 从@ohos.net.sharing中导入sharing命名空间
import sharing from '@ohos.net.sharing'
import sharing from '@ohos.net.sharing'
// 注册监听共享状态的改变
sharing.on('sharingStateChange', (error, data) => {
// 注册监听共享状态的改变
sharing.on('sharingStateChange', (error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
});
});
// 调用startSharing方法,来开启指定类型共享
sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
// 调用startSharing方法,来开启指定类型共享
sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
});
```
## 停止网络共享
......@@ -79,18 +86,18 @@
```js
// 从@ohos.net.sharing中导入sharing命名空间
import sharing from '@ohos.net.sharing'
import sharing from '@ohos.net.sharing'
// 注册监听共享状态的改变
sharing.on('sharingStateChange', (error, data) => {
// 注册监听共享状态的改变
sharing.on('sharingStateChange', (error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
});
});
// 调用stopSharing方法,来停止指定类型共享
sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
// 调用stopSharing方法,来停止指定类型共享
sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
});
```
## 获取共享网络的数据流量
......@@ -104,27 +111,27 @@
```js
// 从@ohos.net.sharing中导入sharing命名空间
import sharing from '@ohos.net.sharing'
import sharing from '@ohos.net.sharing'
// 调用startSharing方法,来开启指定类型共享
sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
// 调用startSharing方法,来开启指定类型共享
sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
});
// 调用getStatsTotalBytes方法,来获取共享网络数据量
sharing.getStatsTotalBytes((error, data) => {
// 调用getStatsTotalBytes方法,来获取共享网络数据量
sharing.getStatsTotalBytes((error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
});
});
// 调用stopSharing方法,来停止指定类型共享,共享网络数据量清零
sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
// 调用stopSharing方法,来停止指定类型共享,共享网络数据量清零
sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
});
// 再次调用getStatsTotalBytes方法,共享网络数据量已清零
sharing.getStatsTotalBytes((error, data) => {
// 再次调用getStatsTotalBytes方法,共享网络数据量已清零
sharing.getStatsTotalBytes((error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
});
});
```
......@@ -186,11 +186,11 @@ UDP与TCP流程大体类似,下面以TCP为例:
```js
import socket from '@ohos.net.socket'
// 创建一个(双向认证)TLS Socket连接,返回一个TLS Socket对象。
let tlsTwoWay = socket.constructTLSSocketInstance();
// 创建一个(双向认证)TLS Socket连接,返回一个TLS Socket对象。
let tlsTwoWay = socket.constructTLSSocketInstance();
// 订阅TLS Socket相关的订阅事件
tlsTwoWay.on('message', value => {
// 订阅TLS Socket相关的订阅事件
tlsTwoWay.on('message', value => {
console.log("on message")
let buffer = value.message
let dataView = new DataView(buffer)
......@@ -199,25 +199,25 @@ UDP与TCP流程大体类似,下面以TCP为例:
str += String.fromCharCode(dataView.getUint8(i))
}
console.log("on connect received:" + str)
});
tlsTwoWay.on('connect', () => {
});
tlsTwoWay.on('connect', () => {
console.log("on connect")
});
tlsTwoWay.on('close', () => {
});
tlsTwoWay.on('close', () => {
console.log("on close")
});
});
// 绑定本地IP地址和端口。
tlsTwoWay.bind({address: '192.168.xxx.xxx', port: xxxx, family: 1}, err => {
// 绑定本地IP地址和端口。
tlsTwoWay.bind({address: '192.168.xxx.xxx', port: xxxx, family: 1}, err => {
if (err) {
console.log('bind fail');
return;
}
console.log('bind success');
});
});
// 设置通信过程中使用参数
let options = {
// 设置通信过程中使用参数
let options = {
ALPNProtocols: ["spdy/1", "http/1.1"],
// 连接到指定的IP地址和端口。
......@@ -238,16 +238,16 @@ UDP与TCP流程大体类似,下面以TCP为例:
signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256", // 签名算法
cipherSuite: "AES256-SHA256", // 密码套件
},
};
};
// 建立连接
tlsTwoWay.connect(options, (err, data) => {
// 建立连接
tlsTwoWay.connect(options, (err, data) => {
console.error(err);
console.log(data);
});
});
// 连接使用完毕后,主动关闭。取消相关事件的订阅。
tlsTwoWay.close((err) => {
// 连接使用完毕后,主动关闭。取消相关事件的订阅。
tlsTwoWay.close((err) => {
if (err) {
console.log("close callback error = " + err);
} else {
......@@ -256,59 +256,59 @@ UDP与TCP流程大体类似,下面以TCP为例:
tlsTwoWay.off('message');
tlsTwoWay.off('connect');
tlsTwoWay.off('close');
});
});
// 创建一个(单向认证)TLS Socket连接,返回一个TLS Socket对象。
let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication
// 创建一个(单向认证)TLS Socket连接,返回一个TLS Socket对象。
let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication
// 订阅TLS Socket相关的订阅事件
tlsTwoWay.on('message', value => {
// 订阅TLS Socket相关的订阅事件
tlsTwoWay.on('message', value => {
console.log("on message")
let buffer = value.message
let dataView = new DataView(buffer)
let str = ""
for (let i = 0;i < dataView.byteLength; ++i) {
for (let i = 0; i < dataView.byteLength; ++i) {
str += String.fromCharCode(dataView.getUint8(i))
}
console.log("on connect received:" + str)
});
tlsTwoWay.on('connect', () => {
});
tlsTwoWay.on('connect', () => {
console.log("on connect")
});
tlsTwoWay.on('close', () => {
});
tlsTwoWay.on('close', () => {
console.log("on close")
});
});
// 绑定本地IP地址和端口。
tlsOneWay.bind({address: '192.168.xxx.xxx', port: xxxx, family: 1}, err => {
// 绑定本地IP地址和端口。
tlsOneWay.bind({address: '192.168.xxx.xxx', port: xxxx, family: 1}, err => {
if (err) {
console.log('bind fail');
return;
}
console.log('bind success');
});
});
// 设置通信过程中使用参数
let oneWayOptions = {
// 设置通信过程中使用参数
let oneWayOptions = {
address: {
address: "192.168.xxx.xxx",
port: xxxx,
family: 1,
},
secureOptions: {
ca: ["xxxx","xxxx"], // CA证书
ca: ["xxxx", "xxxx"], // CA证书
cipherSuite: "AES256-SHA256", // 密码套件
},
};
};
// 建立连接
tlsOneWay.connect(oneWayOptions, (err, data) => {
// 建立连接
tlsOneWay.connect(oneWayOptions, (err, data) => {
console.error(err);
console.log(data);
});
});
// 连接使用完毕后,主动关闭。取消相关事件的订阅。
tlsTwoWay.close((err) => {
// 连接使用完毕后,主动关闭。取消相关事件的订阅。
tlsTwoWay.close((err) => {
if (err) {
console.log("close callback error = " + err);
} else {
......@@ -317,12 +317,13 @@ UDP与TCP流程大体类似,下面以TCP为例:
tlsTwoWay.off('message');
tlsTwoWay.off('connect');
tlsTwoWay.off('close');
});
});
```
## 相关实例
针对Socket连接开发,有以下相关实例可供参考:
- [`Socket`:Socket 连接(ArkTS)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/master/Network/Socket)
- [使用UDP实现与服务端通信(ArkTS)(API9)](https://gitee.com/openharmony/codelabs/tree/master/NetworkManagement/UdpDemoOH)
- [使用TCP实现与服务端通信(ArkTS)(API9)](https://gitee.com/openharmony/codelabs/tree/master/NetworkManagement/TcpSocketDemo)
# WebSocket连接
## 场景介绍
使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket()方法创建WebSocket对象,然后通过connect()方法连接到服务器。当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send()方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close()方法主动断开连接,之后客户端会收到close事件的回调。
若在上述任一过程中发生错误,客户端会收到error事件的回调。
## 接口说明
WebSocket连接功能主要由webSocket模块提供。使用该功能需要申请ohos.permission.INTERNET权限。具体接口说明如下表。
......@@ -27,7 +25,6 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
| on(type: 'error') | 订阅WebSocket的Error事件。 |
| off(type: 'error') | 取消订阅WebSocket的Error事件。 |
## 开发步骤
1. 导入需要的webSocket模块。
......@@ -87,4 +84,5 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
## 相关实例
针对WebSocket连接的开发,有以下相关实例可供参考:
- [`WebSocket`:WebSocket(ArkTS)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/master/Network/WebSocket)
\ No newline at end of file
......@@ -2,7 +2,7 @@
本模块提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
>**说明:**
> **说明:**
>
>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
......@@ -83,6 +83,7 @@ createHttp(): HttpRequest
```js
import http from '@ohos.net.http';
let httpRequest = http.createHttp();
```
......@@ -96,8 +97,8 @@ request(url: string, callback: AsyncCallback\<HttpResponse\>):void
根据URL地址,发起HTTP网络请求,使用callback方式作为异步方法。
>**说明:**
>此接口仅支持数据大小为5M以内的数据传输。
> **说明:**
> 此接口仅支持数据大小为5M以内的数据传输。
**需要权限**:ohos.permission.INTERNET
......@@ -122,7 +123,7 @@ request(url: string, callback: AsyncCallback\<HttpResponse\>):void
| 2300052 | Server returned nothing (no headers, no data). |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:[curl错误码](https://curl.se/libcurl/c/libcurl-errors.html)
......@@ -147,8 +148,8 @@ request(url: string, options: HttpRequestOptions, callback: AsyncCallback\<HttpR
根据URL地址和相关配置项,发起HTTP网络请求,使用callback方式作为异步方法。
>**说明:**
>此接口仅支持数据大小为5M以内的数据传输。
> **说明:**
> 此接口仅支持数据大小为5M以内的数据传输。
**需要权限**:ohos.permission.INTERNET
......@@ -198,7 +199,7 @@ request(url: string, options: HttpRequestOptions, callback: AsyncCallback\<HttpR
| 2300094 | An authentication function returned an error. |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:[curl错误码](https://curl.se/libcurl/c/libcurl-errors.html)
......@@ -206,14 +207,14 @@ request(url: string, options: HttpRequestOptions, callback: AsyncCallback\<HttpR
```js
httpRequest.request("EXAMPLE_URL",
{
{
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
},
readTimeout: 60000,
connectTimeout: 60000
}, (err, data) => {
}, (err, data) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
......@@ -224,7 +225,7 @@ httpRequest.request("EXAMPLE_URL",
} else {
console.info('error:' + JSON.stringify(err));
}
});
});
```
### request
......@@ -233,8 +234,8 @@ request(url: string, options? : HttpRequestOptions): Promise\<HttpResponse\>
根据URL地址,发起HTTP网络请求,使用Promise方式作为异步方法。
>**说明:**
>此接口仅支持数据大小为5M以内的数据传输。
> **说明:**
> 此接口仅支持数据大小为5M以内的数据传输。
**需要权限**:ohos.permission.INTERNET
......@@ -289,7 +290,7 @@ request(url: string, options? : HttpRequestOptions): Promise\<HttpResponse\>
| 2300094 | An authentication function returned an error. |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:[curl错误码](https://curl.se/libcurl/c/libcurl-errors.html)
......@@ -334,7 +335,7 @@ httpRequest.destroy();
request2(url: string, callback: AsyncCallback\<number\>): void
根据URL地址和相关配置项,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。
根据URL地址,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。
**需要权限**:ohos.permission.INTERNET
......@@ -359,7 +360,7 @@ request2(url: string, callback: AsyncCallback\<number\>): void
| 2300052 | Server returned nothing (no headers, no data). |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:[curl错误码](https://curl.se/libcurl/c/libcurl-errors.html)
......@@ -429,7 +430,7 @@ request2(url: string, options: HttpRequestOptions, callback: AsyncCallback\<numb
| 2300094 | An authentication function returned an error. |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:[curl错误码](https://curl.se/libcurl/c/libcurl-errors.html)
......@@ -437,21 +438,22 @@ request2(url: string, options: HttpRequestOptions, callback: AsyncCallback\<numb
```js
httpRequest.request2("EXAMPLE_URL",
{
{
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
},
readTimeout: 60000,
connectTimeout: 60000
}, (err, data) => {
}, (err, data) => {
if (!err) {
console.info("request2 OK! ResponseCode is " + JSON.stringify(data));
} else {
console.info("request2 ERROR : err = " + JSON.stringify(err));
}
})
})
```
### request2<sup>10+</sup>
request2(url: string, options? : HttpRequestOptions): Promise\<number\>
......@@ -511,14 +513,14 @@ request2(url: string, options? : HttpRequestOptions): Promise\<number\>
| 2300094 | An authentication function returned an error. |
| 2300999 | Unknown Other Error. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[HTTP错误码](../errorcodes/errorcode-net-http.md)。
> HTTP 错误码映射关系:2300000 + curl错误码。更多常用错误码,可参考:
**示例:**
```js
let promise = httpRequest.request("EXAMPLE_URL", {
let promise = httpRequest.request2("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
......@@ -539,8 +541,8 @@ on(type: 'headerReceive', callback: AsyncCallback\<Object\>): void
订阅HTTP Response Header 事件。
>**说明:**
>此接口已废弃,建议使用[on('headersReceive')<sup>8+</sup>](#onheadersreceive8)替代。
> **说明:**
> 此接口已废弃,建议使用[on('headersReceive')<sup>8+</sup>](#onheadersreceive8)替代。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -565,7 +567,7 @@ off(type: 'headerReceive', callback?: AsyncCallback\<Object\>): void
取消订阅HTTP Response Header 事件。
>**说明:**
> **说明:**
>
>1. 此接口已废弃,建议使用[off('headersReceive')<sup>8+</sup>](#offheadersreceive8)替代。
>
......@@ -615,8 +617,8 @@ off(type: 'headersReceive', callback?: Callback\<Object\>): void
取消订阅HTTP Response Header 事件。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -655,6 +657,7 @@ httpRequest.once('headersReceive', (header) => {
console.info('header: ' + JSON.stringify(header));
});
```
### on('dataReceive')<sup>10+</sup>
on(type: 'dataReceive', callback: Callback\<ArrayBuffer\>): void
......@@ -684,8 +687,8 @@ off(type: 'dataReceive', callback?: Callback\<ArrayBuffer\>): void
取消订阅HTTP流式响应数据接收事件。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -720,8 +723,8 @@ on(type: 'dataEnd', callback: Callback\<void\>): void
**示例:**
```js
httpRequest.on('dataReceive', () => {
console.info('Receive dataEnd!');
httpRequest.on('dataEnd', () => {
console.info('Receive dataEnd !');
});
```
......@@ -731,8 +734,8 @@ off(type: 'dataEnd', callback?: Callback\<void\>): void
取消订阅HTTP流式响应数据接收完毕事件。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -751,7 +754,7 @@ httpRequest.off('dataEnd');
### on('dataProgress')<sup>10+</sup>
on(type: 'dataProgress', callback: Callback\<{ receiveSize: number, totalSize: number }\>): void
on(type: 'dataProgress', callback: AsyncCallback\<{ receiveSize: number, totalSize: number }\>): void
订阅HTTP流式响应数据接收进度事件。
......@@ -778,8 +781,8 @@ off(type: 'dataProgress', callback?: Callback\<{ receiveSize: number, totalSize:
取消订阅HTTP流式响应数据接收进度事件。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -795,6 +798,7 @@ off(type: 'dataProgress', callback?: Callback\<{ receiveSize: number, totalSize:
```js
httpRequest.off('dataProgress');
```
## HttpRequestOptions
发起请求可选参数的类型和取值范围。
......@@ -803,11 +807,11 @@ httpRequest.off('dataProgress');
| 名称 | 类型 | 必填 | 说明 |
| -------------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| method | [RequestMethod](#requestmethod) | 否 | 请求方式。 |
| extraData | string \| Object \| ArrayBuffer<sup>6+</sup> | 否 | 发送请求的额外数据。<br />- 当HTTP请求为POST、PUT等方法时,此字段为HTTP请求的content。<br />- 当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT等方法时,此字段为HTTP请求的参数补充,参数内容会拼接到URL中进行发送。<sup>6+</sup><br />- 开发者传入string对象,开发者需要自行编码,将编码后的string传入<sup>6+</sup> |
| expectDataType<sup>9+</sup> | [HttpDataType](#httpdatatype9) | 否 | 指定返回数据的类型。如果设置了此参数,系统将优先返回指定的类型。 |
| method | [RequestMethod](#requestmethod) | 否 | 请求方式,默认为GET。 |
| extraData | string \| Object \| ArrayBuffer<sup>6+</sup> | 否 | 发送请求的额外数据,默认无此字段。<br />- 当HTTP请求为POST、PUT等方法时,此字段为HTTP请求的content,以UTF-8编码形式作为请求体。<sup>6+</sup><br />- 当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT等方法时,此字段为HTTP请求参数的补充。开发者需传入Encode编码后的string类型参数,Object类型的参数无需预编码,参数内容会拼接到URL中进行发送;ArrayBuffer类型的参数不会做拼接处理<sup>6+</sup> |
| expectDataType<sup>9+</sup> | [HttpDataType](#httpdatatype9) | 否 | 指定返回数据的类型,默认无此字段。如果设置了此参数,系统将优先返回指定的类型。 |
| usingCache<sup>9+</sup> | boolean | 否 | 是否使用缓存,默认为true。 |
| priority<sup>9+</sup> | number | 否 | 优先级,范围\[1,1000],默认是1。 |
| priority<sup>9+</sup> | number | 否 | 优先级,范围\[0,1000],默认是0。 |
| header | Object | 否 | HTTP请求头字段。默认{'Content-Type': 'application/json'}。 |
| readTimeout | number | 否 | 读取超时时间。单位为毫秒(ms),默认为60000ms。 |
| connectTimeout | number | 否 | 连接超时时间。单位为毫秒(ms),默认为60000ms。 |
......@@ -886,7 +890,7 @@ request方法回调函数的返回值类型。
| result | string \| Object \| ArrayBuffer<sup>6+</sup> | 是 | HTTP请求根据响应头中Content-type类型返回对应的响应格式内容:<br />- application/json:返回JSON格式的字符串,如需HTTP响应具体内容,需开发者自行解析<br />- application/octet-stream:ArrayBuffer<br />- 其他:string |
| resultType<sup>9+</sup> | [HttpDataType](#httpdatatype9) | 是 | 返回值类型。 |
| responseCode | [ResponseCode](#responsecode) \| number | 是 | 回调函数执行成功时,此字段为[ResponseCode](#responsecode)。若执行失败,错误码将会从AsyncCallback中的err字段返回。 |
| header | Object | 是 | 发起HTTP请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下:<br/>- Content-Type:header['Content-Type'];<br />- Status-Line:header['Status-Line'];<br />- Date:header.Date/header['Date'];<br />- Server:header.Server/header['Server']; |
| header | Object | 是 | 发起HTTP请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下:<br/>- content-type:header['content-type'];<br />- status-line:header['status-line'];<br />- date:header.date/header['date'];<br />- server:header.server/header['server']; |
| cookies<sup>8+</sup> | string | 是 | 服务器返回的 cookies。 |
## http.createHttpResponseCache<sup>9+</sup>
......@@ -913,6 +917,7 @@ createHttpResponseCache(cacheSize?: number): HttpResponseCache
```js
import http from '@ohos.net.http';
let httpResponseCache = http.createHttpResponseCache();
```
......@@ -995,6 +1000,7 @@ httpResponseCache.delete(err => {
console.info('delete success');
});
```
### delete<sup>9+</sup>
delete(): Promise\<void\>
......
......@@ -10,6 +10,7 @@
```js
import connection from '@ohos.net.connection'
```
## connection.createNetConnection
createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection
......@@ -34,10 +35,10 @@ createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnectio
**示例:**
```js
// 关注默认网络
// 关注默认网络, 不需要传参
let netConnection = connection.createNetConnection()
// 关注蜂窝网络
// 关注蜂窝网络,需要传入相关网络特征,timeout参数未传入说明未使用超时时间,此时timeout为0
let netConnectionCellular = connection.createNetConnection({
netCapabilities: {
bearerTypes: [connection.NetBearType.BEARER_CELLULAR]
......@@ -166,7 +167,7 @@ getGlobalHttpProxy(callback: AsyncCallback\<HttpProxy>): void
**示例:**
```js
connection.getGlobalHttpProxy((error,data) => {
connection.getGlobalHttpProxy((error, data) => {
console.info(JSON.stringify(error));
console.info(JSON.stringify(data));
})
......@@ -237,16 +238,15 @@ setGlobalHttpProxy(httpProxy: HttpProxy, callback: AsyncCallback\<void>): void
**示例:**
```js
let exclusionStr="192.168,baidu.com"
let exclusionStr = "192.168,baidu.com"
let exclusionArray = exclusionStr.split(',');
let httpProxy = {
host: "192.168.xx.xxx",
port: 8080,
exclusionList: exclusionArray
}
connection.setGlobalHttpProxy(httpProxy, (error, data) => {
connection.setGlobalHttpProxy(httpProxy, (error) => {
console.info(JSON.stringify(error));
console.info(JSON.stringify(data));
});
```
......@@ -287,7 +287,7 @@ setGlobalHttpProxy(httpProxy: HttpProxy): Promise\<void>;
**示例:**
```js
let exclusionStr="192.168,baidu.com"
let exclusionStr = "192.168,baidu.com"
let exclusionArray = exclusionStr.split(',');
let httpProxy = {
host: "192.168.xx.xxx",
......@@ -296,7 +296,7 @@ let httpProxy = {
}
connection.setGlobalHttpProxy(httpProxy).then(() => {
console.info("success");
}).catch(error=>{
}).catch(error => {
console.info(JSON.stringify(error));
})
```
......@@ -325,7 +325,7 @@ getAppNet(callback: AsyncCallback\<NetHandle>): void
**示例:**
```js
connection.getAppNet(function(error, data) {
connection.getAppNet(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -935,8 +935,7 @@ connection.disableAirplaneMode().then(function (error) {
reportNetConnected(netHandle: NetHandle, callback: AsyncCallback&lt;void&gt;): void
向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。
使用callback方式作为异步方法。
向网络管理报告网络处于可用状态,使用callback方式作为异步方法。
**需要权限**:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
......@@ -973,8 +972,7 @@ connection.getDefaultNet().then(function (netHandle) {
reportNetConnected(netHandle: NetHandle): Promise&lt;void&gt;
向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。
使用Promise方式作为异步方法。
向网络管理报告网络处于可用状态,使用Promise方式作为异步方法。
**需要权限**:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
......@@ -987,9 +985,7 @@ reportNetConnected(netHandle: NetHandle): Promise&lt;void&gt;
| netHandle | [NetHandle](#nethandle) | 是 | 数据网络的句柄,参考[NetHandle](#nethandle)。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 无返回值的Promise对象。 |
| 类型 | 说明 | | -------- | -------- | | Promise&lt;void&gt; | 无返回值的Promise对象。 |
**错误码:**
......@@ -1015,8 +1011,7 @@ connection.getDefaultNet().then(function (netHandle) {
reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback&lt;void&gt;): void
向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。
使用callback方式作为异步方法。
向网络管理报告网络处于不可用状态,使用callback方式作为异步方法。
**需要权限**:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
......@@ -1053,8 +1048,7 @@ connection.getDefaultNet().then(function (netHandle) {
reportNetDisconnected(netHandle: NetHandle): Promise&lt;void&gt;
向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。
使用Promise方式作为异步方法。
向网络管理报告网络处于不可用状态,使用Promise方式作为异步方法。
**需要权限**:ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
......@@ -1067,9 +1061,7 @@ reportNetDisconnected(netHandle: NetHandle): Promise&lt;void&gt;
| netHandle | [NetHandle](#nethandle) | 是 | 数据网络的句柄,参考[NetHandle](#nethandle)。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 无返回值的Promise对象。 |
| 类型 | 说明 | | -------- | -------- | | Promise&lt;void&gt; | 无返回值的Promise对象。 |
**错误码:**
......@@ -1199,7 +1191,6 @@ register(callback: AsyncCallback\<void>): void
| 2101008 | The callback is not exists. |
| 2101022 | The number of requests exceeded the maximum. |
**示例:**
```js
......@@ -1357,7 +1348,8 @@ netCon.unregister(function (error) {
### on('netConnectionPropertiesChange')
on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void
on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties:
ConnectionProperties }>): void
订阅网络连接信息变化事件。
......@@ -1514,6 +1506,7 @@ bindSocket(socketParam: TCPSocket \| UDPSocket, callback: AsyncCallback\<void>):
```js
import socket from "@ohos.net.socket";
connection.getDefaultNet().then((netHandle) => {
var tcp = socket.constructTCPSocketInstance();
var udp = socket.constructUDPSocketInstance();
......@@ -1524,6 +1517,7 @@ connection.getDefaultNet().then((netHandle) => {
}, error => {
if (error) {
console.log('bind fail');
return;
}
netHandle.bindSocket(tcp, (error, data) => {
if (error) {
......@@ -1543,6 +1537,7 @@ connection.getDefaultNet().then((netHandle) => {
}, error => {
if (error) {
console.log('bind fail');
return;
}
udp.on('message', (data) => {
console.log(JSON.stringify(data))
......@@ -1592,6 +1587,7 @@ bindSocket(socketParam: TCPSocket \| UDPSocket): Promise\<void>;
```js
import socket from "@ohos.net.socket";
connection.getDefaultNet().then((netHandle) => {
var tcp = socket.constructTCPSocketInstance();
var udp = socket.constructUDPSocketInstance();
......@@ -1602,6 +1598,7 @@ connection.getDefaultNet().then((netHandle) => {
}, error => {
if (error) {
console.log('bind fail');
return;
}
netHandle.bindSocket(tcp).then((data) => {
console.log(JSON.stringify(data));
......@@ -1619,6 +1616,7 @@ connection.getDefaultNet().then((netHandle) => {
}, error => {
if (error) {
console.log('bind fail');
return;
}
udp.on('message', (data) => {
console.log(JSON.stringify(data));
......@@ -1905,8 +1903,5 @@ connection.getDefaultNet().then(function (netHandle) {
**系统能力**:SystemCapability.Communication.NetManager.Core
| 名称 | 类型 | 必填 | 说明 |
| ------- | ------ | -- |------------------------------ |
| address | string | 是 |地址。 |
| family | number | 否 |IPv4 = 1,IPv6 = 2,默认IPv4。 |
| port | number | 否 |端口,取值范围\[0, 65535]。 |
| 名称 | 类型 | 必填 | 说明 | | ------- | ------ | -- |------------------------------ | | address | string | 是 |地址。 | | family |
number | 否 |IPv4 = 1,IPv6 = 2,默认IPv4。 | | port | number | 否 |端口,取值范围\[0, 65535]。 |
......@@ -386,6 +386,74 @@ ethernet.getAllActiveIfaces().then((data) => {
});
```
## ethernet.on('interfaceStateChange')<sup>10+</sup>
on(type: 'interfaceStateChange', callback: Callback\<{ iface: string, active: boolean }\>): void
注册网卡热插拔事件,使用callback方式作为异步方法。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.GET_NETWORK_INFO
**系统能力**:SystemCapability.Communication.NetManager.Ethernet
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------------- | ---- | ---------- |
| type | string | 是 | 订阅的事件类型,'interfaceStateChange'。 |
| callback | AsyncCallback\<{ iface: string, active: boolean }\> | 是 | 回调函数。<br>iface:网卡名称。<br>active:是否处于激活状态(true:激活;false:未激活) |
**错误码:**
| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 201 | Permission denied. |
| 202 | Applicable only to system applications. |
| 401 | Parameter error. |
**示例:**
```js
ethernet.on('interfaceStateChange', (data) => {
console.log('on interfaceSharingStateChange:' + JSON.stringify(data));
});
```
## ethernet.off('interfaceStateChange')<sup>10+</sup>
off(type: 'interfaceStateChange', callback?: Callback\<{ iface: string, active: boolean }\>): void
注销网卡热插拔事件,使用callback方式作为异步方法。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.GET_NETWORK_INFO
**系统能力**:SystemCapability.Communication.NetManager.Ethernet
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------------- | ---- | ---------- |
| type | string | 是 | 订阅的事件类型,'interfaceStateChange'。 |
| callback | AsyncCallback\<{ iface: string, active: boolean }> | 否 | 回调函数。<br>iface:网卡名称。<br>active:是否处于激活状态(true:激活;false:未激活) |
**错误码:**
| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 201 | Permission denied. |
| 202 | Applicable only to system applications. |
| 401 | Parameter error. |
**示例:**
```js
ethernet.off('interfaceStateChange');
```
## InterfaceConfiguration
以太网连接配置网络信息。
......
......@@ -10,6 +10,7 @@ MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、
```js
import mdns from '@ohos.net.mdns'
```
## mdns.addLocalService
addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\<LocalServiceInfo>): void
......@@ -37,7 +38,7 @@ addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: Async
| 2204008 | Service instance duplicated. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -94,7 +95,7 @@ addLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<Local
| 2204008 | Service instance duplicated. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -145,7 +146,7 @@ removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: As
| 2204008 | Service instance duplicated. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -202,7 +203,7 @@ removeLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<Lo
| 2204008 | Service instance duplicated. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -282,7 +283,7 @@ resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: A
| 2204006 | Request timeout. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -339,7 +340,7 @@ resolveLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<L
| 2204006 | Request timeout. |
| 2204010 | Send packet failed. |
>**错误码说明:**
> **错误码说明:**
> 以上错误码的详细介绍参见[MDNS错误码](../errorcodes/errorcode-net-mdns.md)。
**示例:**
......@@ -358,7 +359,7 @@ let localServiceInfo = {
}]
}
mdns.resolveLocalService(context, localServiceInfo).then(function (data){
mdns.resolveLocalService(context, localServiceInfo).then(function (data) {
console.log(JSON.stringify(data));
})
```
......
......@@ -46,7 +46,9 @@ policy.setBackgroundPolicy(Boolean(Number.parseInt(this.isBoolean))), (error, da
this.callBack(error, data);
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
});
}
)
;
```
## policy.setBackgroundPolicy
......@@ -84,7 +86,7 @@ setBackgroundPolicy(isAllowed: boolean): Promise\<void>
**示例:**
```js
policy.setBackgroundPolicy(Boolean(Number.parseInt(this.isBoolean))).then(function(error, data) {
policy.setBackgroundPolicy(Boolean(Number.parseInt(this.isBoolean))).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -151,7 +153,7 @@ isBackgroundAllowed(): Promise\<boolean>;
**示例:**
```js
policy.isBackgroundAllowed().then(function(error, data) {
policy.isBackgroundAllowed().then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -236,7 +238,7 @@ setPolicyByUid(uid: number, policy: NetUidPolicy): Promise\<void>;
let param = {
uid: Number.parseInt(this.firstParam), policy: Number.parseInt(this.currentNetUidPolicy)
}
policy.setPolicyByUid(Number.parseInt(this.firstParam), Number.parseInt(this.currentNetUidPolicy)).then(function(error, data) {
policy.setPolicyByUid(Number.parseInt(this.firstParam), Number.parseInt(this.currentNetUidPolicy)).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -313,7 +315,7 @@ getPolicyByUid(uid: number): Promise\<NetUidPolicy>;
**示例:**
```js
policy.getPolicyByUid(Number.parseInt(this.firstParam)).then(function(error, data) {
policy.getPolicyByUid(Number.parseInt(this.firstParam)).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -390,7 +392,7 @@ function getUidsByPolicy(policy: NetUidPolicy): Promise\<Array\<number>>;
**示例:**
```js
policy.getUidsByPolicy(Number.parseInt(this.firstParam)).then(function(error, data) {
policy.getUidsByPolicy(Number.parseInt(this.firstParam)).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -456,7 +458,7 @@ getNetQuotaPolicies(): Promise\<Array\<NetQuotaPolicy>>;
**示例:**
```js
policy.getNetQuotaPolicies().then(function(error, data) {
policy.getNetQuotaPolicies().then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -493,8 +495,18 @@ setNetQuotaPolicies(quotaPolicies: Array\<NetQuotaPolicy>, callback: AsyncCallba
**示例:**
```js
let param = {netType:Number.parseInt(this.netType), iccid:this.iccid, ident:this.ident, periodDuration:this.periodDuration, warningBytes:Number.parseInt(this.warningBytes),
limitBytes:Number.parseInt(this.limitBytes), lastWarningRemind:this.lastWarningRemind, lastLimitRemind:this.lastLimitRemind, metered:Boolean(Number.parseInt(this.metered)), limitAction:this.limitAction};
let param = {
netType: Number.parseInt(this.netType),
iccid: this.iccid,
ident: this.ident,
periodDuration: this.periodDuration,
warningBytes: Number.parseInt(this.warningBytes),
limitBytes: Number.parseInt(this.limitBytes),
lastWarningRemind: this.lastWarningRemind,
lastLimitRemind: this.lastLimitRemind,
metered: Boolean(Number.parseInt(this.metered)),
limitAction: this.limitAction
};
this.netQuotaPolicyList.push(param);
policy.setNetQuotaPolicies(this.netQuotaPolicyList, (error, data) => {
......@@ -537,11 +549,21 @@ setNetQuotaPolicies(quotaPolicies: Array\<NetQuotaPolicy>): Promise\<void>;
**示例:**
```js
let param = {netType:Number.parseInt(this.netType), iccid:this.iccid, ident:this.ident, periodDuration:this.periodDuration, warningBytes:Number.parseInt(this.warningBytes),
limitBytes:Number.parseInt(this.limitBytes), lastWarningRemind:this.lastWarningRemind, lastLimitRemind:this.lastLimitRemind, metered:Boolean(Number.parseInt(this.metered)), limitAction:this.limitAction};
let param = {
netType: Number.parseInt(this.netType),
iccid: this.iccid,
ident: this.ident,
periodDuration: this.periodDuration,
warningBytes: Number.parseInt(this.warningBytes),
limitBytes: Number.parseInt(this.limitBytes),
lastWarningRemind: this.lastWarningRemind,
lastLimitRemind: this.lastLimitRemind,
metered: Boolean(Number.parseInt(this.metered)),
limitAction: this.limitAction
};
this.netQuotaPolicyList.push(param);
policy.setNetQuotaPolicies(this.netQuotaPolicyList).then(function(error, data) {
policy.setNetQuotaPolicies(this.netQuotaPolicyList).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -619,7 +641,7 @@ restoreAllPolicies(iccid: string): Promise\<void>;
```js
this.firstParam = iccid;
policy.restoreAllPolicies(this.firstParam).then(function(error, data){
policy.restoreAllPolicies(this.firstParam).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -706,7 +728,7 @@ isUidNetAllowed(uid: number, isMetered: boolean): Promise\<boolean>;
let param = {
uid: Number.parseInt(this.firstParam), isMetered: Boolean(Number.parseInt(this.isBoolean))
}
policy.isUidNetAllowed(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function(error, data) {
policy.isUidNetAllowed(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -792,7 +814,7 @@ isUidNetAllowed(uid: number, iface: string): Promise\<boolean>;
let param = {
uid: Number.parseInt(this.firstParam), iface: this.secondParam
}
policy.isUidNetAllowed(Number.parseInt(this.firstParam), this.secondParam).then(function(error, data) {
policy.isUidNetAllowed(Number.parseInt(this.firstParam), this.secondParam).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -877,7 +899,7 @@ setDeviceIdleAllowList(uid: number, isAllowed: boolean): Promise\<void>;
let param = {
uid: Number.parseInt(this.firstParam), isAllowed: Boolean(Number.parseInt(this.isBoolean))
}
policy.setDeviceIdleAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function(error, data) {
policy.setDeviceIdleAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -943,7 +965,7 @@ getDeviceIdleAllowList(): Promise\<Array\<number>>;
**示例:**
```js
policy.getDeviceIdleAllowList().then(function(error, data) {
policy.getDeviceIdleAllowList().then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1021,7 +1043,7 @@ getBackgroundPolicyByUid(uid: number): Promise\<NetBackgroundPolicy>;
```js
this.firstParam = uid
policy.getBackgroundPolicyByUid(Number.parseInt(this.firstParam)).then(function(error, data) {
policy.getBackgroundPolicyByUid(Number.parseInt(this.firstParam)).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1098,11 +1120,11 @@ resetPolicies(iccid: string): Promise\<void>;
**示例:**
```js
policy.getUidsByPolicy(Number.parseInt(this.firstParam)).then(function(error, data) {
policy.getUidsByPolicy(Number.parseInt(this.firstParam)).then(function (error, data) {
})
this.firstParam = iccid
policy.resetPolicies(this.firstParam).then(function(error, data) {
policy.resetPolicies(this.firstParam).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1189,7 +1211,7 @@ updateRemindPolicy(netType: NetBearType, iccid: string, remindType: RemindType):
let param = {
netType: Number.parseInt(this.netType), iccid: this.firstParam, remindType: this.currentRemindType
}
policy.updateRemindPolicy(Number.parseInt(this.netType), this.firstParam, Number.parseInt(this.currentRemindType)).then(function(error, data) {
policy.updateRemindPolicy(Number.parseInt(this.netType), this.firstParam, Number.parseInt(this.currentRemindType)).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1274,7 +1296,7 @@ setPowerSaveAllowList(uid: number, isAllowed: boolean): Promise\<void>;
let param = {
uid: Number.parseInt(this.firstParam), isAllowed: Boolean(Number.parseInt(this.isBoolean))
}
policy.setPowerSaveAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function(error, data) {
policy.setPowerSaveAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean))).then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1340,7 +1362,7 @@ getPowerSaveAllowList(): Promise\<Array\<number>>;
**示例:**
```js
policy.getPowerSaveAllowList().then(function(error, data) {
policy.getPowerSaveAllowList().then(function (error, data) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(data))
})
......@@ -1540,10 +1562,8 @@ policy.on('netBackgroundPolicyChange', (data) => {
**系统能力**:SystemCapability.Communication.NetManager.Core
| 参数名 | 值 | 说明 |
| ---------------------- | - | ------- |
| REMIND_TYPE_WARNING | 1 | 警告提醒 |
| REMIND_TYPE_LIMIT | 2 | 限制提醒 |
| 参数名 | 值 | 说明 | | ---------------------- | - | ------- | | REMIND_TYPE_WARNING | 1 | 警告提醒 | | REMIND_TYPE_LIMIT | 2 |
限制提醒 |
## NetUidPolicy
......
......@@ -194,7 +194,8 @@ startSharing(type: SharingIfaceType, callback: AsyncCallback\<void>): void
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.startSharing(SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
......@@ -243,7 +244,8 @@ startSharing(type: SharingIfaceType): Promise\<void>
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.startSharing(SHARING_WIFI).then(() => {
console.log("start wifi sharing successful");
}).catch(error => {
......@@ -287,7 +289,8 @@ stopSharing(type: SharingIfaceType, callback: AsyncCallback\<void>): void
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.stopSharing(SHARING_WIFI, (error) => {
console.log(JSON.stringify(error));
});
......@@ -334,7 +337,8 @@ stopSharing(type: SharingIfaceType): Promise\<void>
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.stopSharing(SHARING_WIFI).then(() => {
console.log("stop wifi sharing successful");
}).catch(error => {
......@@ -588,7 +592,8 @@ getSharingIfaces(state: SharingIfaceState, callback: AsyncCallback\<Array\<strin
```js
import SharingIfaceState from '@ohos.net.sharing'
let SHARING_BLUETOOTH=2;
let SHARING_BLUETOOTH = 2;
sharing.getSharingIfaces(SHARING_BLUETOOTH, (error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
......@@ -633,7 +638,8 @@ getSharingIfaces(state: SharingIfaceState): Promise\<Array\<string>>
```js
import SharingIfaceState from '@ohos.net.sharing'
let SHARING_BLUETOOTH=2;
let SHARING_BLUETOOTH = 2;
sharing.getSharingIfaces(SHARING_BLUETOOTH).then(data => {
console.log(JSON.stringify(data));
}).catch(error => {
......@@ -674,7 +680,8 @@ getSharingState(type: SharingIfaceType, callback: AsyncCallback\<SharingIfaceSta
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.getSharingState(SHARING_WIFI, (error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
......@@ -719,7 +726,8 @@ getSharingState(type: SharingIfaceType): Promise\<SharingIfaceState>
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.getSharingState(SHARING_WIFI).then(data => {
console.log(JSON.stringify(data));
}).catch(error => {
......@@ -760,7 +768,8 @@ getSharableRegexes(type: SharingIfaceType, callback: AsyncCallback\<Array\<strin
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.getSharableRegexes(SHARING_WIFI, (error, data) => {
console.log(JSON.stringify(error));
console.log(JSON.stringify(data));
......@@ -805,7 +814,8 @@ getSharableRegexes(type: SharingIfaceType): Promise\<Array\<string>>
```js
import SharingIfaceType from '@ohos.net.sharing'
let SHARING_WIFI=0;
let SHARING_WIFI = 0;
sharing.getSharableRegexes(SHARING_WIFI).then(data => {
console.log(JSON.stringify(data));
}).catch(error => {
......@@ -842,8 +852,8 @@ on(type: 'sharingStateChange', callback: Callback\<boolean>): void
**示例:**
```js
sharing.on('sharingStateChange', (data) => {
console.log('on sharingStateChange:' + JSON.stringify(data));
sharing.on('sharingStateChange', (data) => {
console.log('on sharingStateChange: ' + JSON.stringify(data));
});
```
......@@ -883,7 +893,8 @@ sharing.off('sharingStateChange', (data) => {
## sharing.on('interfaceSharingStateChange')
on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void
on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIfaceType, iface: string, state:
SharingIfaceState }>): void
注册网卡网络共享状态变化事件,使用callback方式作为异步方法。
......@@ -910,14 +921,15 @@ on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIface
**示例:**
```js
sharing.on('interfaceSharingStateChange', (data) => {
console.log('on interfaceSharingStateChange:' + JSON.stringify(data));
sharing.on('interfaceSharingStateChange', (data) => {
console.log('on interfaceSharingStateChange:' + JSON.stringify(data));
});
```
## sharing.off('interfaceSharingStateChange')
off(type: 'interfaceSharingStateChange', callback?: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void
off(type: 'interfaceSharingStateChange', callback?: Callback\<{ type: SharingIfaceType, iface: string, state:
SharingIfaceState }>): void
注销网卡网络共享状态变化事件,使用callback方式作为异步方法。
......@@ -978,8 +990,8 @@ on(type: 'sharingUpstreamChange', callback: Callback\<NetHandle>): void
**示例:**
```js
sharing.on('sharingUpstreamChange', (data) => {
console.log('on sharingUpstreamChange:' + JSON.stringify(data));
sharing.on('sharingUpstreamChange', (data) => {
console.log('on sharingUpstreamChange:' + JSON.stringify(data));
});
```
......
......@@ -5,11 +5,12 @@
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket](#websocketcreatewebsocket)方法创建[WebSocket](#websocket)对象,然后通过[connect](#connect)方法连接到服务器。当连接成功后,客户端会收到[open](#onopen)事件的回调,之后客户端就可以通过[send](#send)方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到[message](#onmessage)事件的回调。当客户端不要此连接时,可以通过调用[close](#close)方法主动断开连接,之后客户端会收到[close](#onclose)事件的回调。
使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket](#websocketcreatewebsocket)方法创建[WebSocket](#websocket)对象,然后通过[connect](#connect)方法连接到服务器。
当连接成功后,客户端会收到[open](#onopen)事件的回调,之后客户端就可以通过[send](#send)方法与服务器进行通信。
当服务器发信息给客户端时,客户端会收到[message](#onmessage)事件的回调。当客户端不要此连接时,可以通过调用[close](#close)方法主动断开连接,之后客户端会收到[close](#onclose)事件的回调。
若在上述任一过程中发生错误,客户端会收到[error](#onerror)事件的回调。
## 导入模块
```js
......@@ -21,9 +22,13 @@ import webSocket from '@ohos.net.webSocket';
```js
import webSocket from '@ohos.net.webSocket';
var defaultIpAddress = "ws://";
let defaultIpAddress = "ws://";
let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {
if (err != undefined) {
console.log(JSON.stringify(err))
return
}
console.log("on open, status:" + value['status'] + ", message:" + value['message']);
// 当收到on('open')事件时,可以通过send()方法与服务器进行通信
ws.send("Hello, server!", (err, value) => {
......@@ -82,7 +87,6 @@ createWebSocket(): WebSocket
let ws = webSocket.createWebSocket();
```
## WebSocket
在调用WebSocket的方法前,需要先通过[webSocket.createWebSocket](#websocketcreatewebsocket)创建一个WebSocket。
......@@ -93,6 +97,9 @@ connect(url: string, callback: AsyncCallback\<boolean\>): void
根据URL地址,建立一个WebSocket连接,使用callback方式作为异步方法。
> **说明:**
> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
**需要权限**:ohos.permission.INTERNET
**系统能力**:SystemCapability.Communication.NetStack
......@@ -125,13 +132,15 @@ ws.connect(url, (err, value) => {
});
```
### connect
connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback\<boolean\>): void
根据URL地址和header,建立一个WebSocket连接,使用callback方式作为异步方法。
> **说明:**
> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
**需要权限**:ohos.permission.INTERNET
**系统能力**:SystemCapability.Communication.NetStack
......@@ -170,13 +179,15 @@ ws.connect(url, {
});
```
### connect
connect(url: string, options?: WebSocketRequestOptions): Promise\<boolean\>
根据URL地址和header,建立一个WebSocket连接,使用Promise方式作为异步方法。
> **说明:**
> 可通过监听error事件获得该接口的执行结果,错误发生时会得到错误码:200。
**需要权限**:ohos.permission.INTERNET
**系统能力**:SystemCapability.Communication.NetStack
......@@ -214,7 +225,6 @@ promise.then((value) => {
});
```
### send
send(data: string | ArrayBuffer, callback: AsyncCallback\<boolean\>): void
......@@ -255,7 +265,6 @@ ws.connect(url, (err, value) => {
});
```
### send
send(data: string | ArrayBuffer): Promise\<boolean\>
......@@ -300,7 +309,6 @@ ws.connect(url, (err, value) => {
});
```
### close
close(callback: AsyncCallback\<boolean\>): void
......@@ -328,7 +336,6 @@ close(callback: AsyncCallback\<boolean\>): void
```js
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close((err, value) => {
if (!err) {
console.log("close success")
......@@ -338,7 +345,6 @@ ws.close((err, value) => {
});
```
### close
close(options: WebSocketCloseOptions, callback: AsyncCallback\<boolean\>): void
......@@ -367,7 +373,6 @@ close(options: WebSocketCloseOptions, callback: AsyncCallback\<boolean\>): void
```js
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close({
code: 1000,
reason: "your reason"
......@@ -380,7 +385,6 @@ ws.close({
});
```
### close
close(options?: WebSocketCloseOptions): Promise\<boolean\>
......@@ -414,7 +418,6 @@ close(options?: WebSocketCloseOptions): Promise\<boolean\>
```js
let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.close({
code: 1000,
reason: "your reason"
......@@ -426,7 +429,6 @@ promise.then((value) => {
});
```
### on('open')
on(type: 'open', callback: AsyncCallback\<Object\>): void
......@@ -442,7 +444,6 @@ on(type: 'open', callback: AsyncCallback\<Object\>): void
| type | string | 是 | 'open':WebSocket的打开事件。 |
| callback | AsyncCallback\<Object\> | 是 | 回调函数。 |
**示例:**
```js
......@@ -452,15 +453,14 @@ ws.on('open', (err, value) => {
});
```
### off('open')
off(type: 'open', callback?: AsyncCallback\<Object\>): void
取消订阅WebSocket的打开事件,使用callback方式作为异步方法。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -483,15 +483,14 @@ ws.on('open', callback1);
ws.off('open', callback1);
```
### on('message')
on(type: 'message', callback: AsyncCallback\<string | ArrayBuffer\>): void
订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。每个消息最大长度为4K,超过4K自动分片。
>**说明:**
>AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
> **说明:**
> AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -511,16 +510,15 @@ ws.on('message', (err, value) => {
});
```
### off('message')
off(type: 'message', callback?: AsyncCallback\<string | ArrayBuffer\>): void
取消订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。每个消息最大长度为4K,超过4K自动分片。
>**说明:**
>AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -538,7 +536,6 @@ let ws = webSocket.createWebSocket();
ws.off('message');
```
### on('close')
on(type: 'close', callback: AsyncCallback\<{ code: number, reason: string }\>): void
......@@ -563,15 +560,14 @@ ws.on('close', (err, value) => {
});
```
### off('close')
off(type: 'close', callback?: AsyncCallback\<{ code: number, reason: string }\>): void
取消订阅WebSocket的关闭事件,使用callback方式作为异步方法。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -589,7 +585,6 @@ let ws = webSocket.createWebSocket();
ws.off('close');
```
### on('error')
on(type: 'error', callback: ErrorCallback): void
......@@ -603,7 +598,7 @@ on(type: 'error', callback: ErrorCallback): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------------------------- |
| type | string | 是 | 'error':WebSocket的Error事件。 |
| callback | ErrorCallback | 是 | 回调函数。 |
| callback | ErrorCallback | 是 | 回调函数。<br>常见错误码:200 |
**示例:**
......@@ -614,15 +609,14 @@ ws.on('error', (err) => {
});
```
### off('error')
off(type: 'error', callback?: ErrorCallback): void
取消订阅WebSocket的Error事件,使用callback方式作为异步方法。
>**说明:**
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
> **说明:**
> 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
**系统能力**:SystemCapability.Communication.NetStack
......@@ -640,7 +634,6 @@ let ws = webSocket.createWebSocket();
ws.off('error');
```
## WebSocketRequestOptions
建立WebSocket连接时,可选参数的类型和说明。
......@@ -651,7 +644,6 @@ ws.off('error');
| ------ | ------ | ---- | ------------------------------------------------------------ |
| header | Object | 否 | 建立WebSocket连接可选参数,代表建立连接时携带的HTTP头信息。参数内容自定义,也可以不指定。 |
## WebSocketCloseOptions
关闭WebSocket连接时,可选参数的类型和说明。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册