JavaScript轻应用网络模块介绍

简介: JavaScript轻应用提供了网络管理相关的功能,APP可以通过JSAPI获取网络相关的信息,并且可以接收网络连接、断开的事件。

JavaScript轻应用提供了网络管理相关的功能,APP可以通过JSAPI获取网络相关的信息,并且可以接收网络连接、断开的事件。

另外,轻应用也提供了通用的udp、tcp、http、mqtt等网络连接功能。

1、network接口

示例代码

  1. var network = require( 'network');
  2. network.connect({
  3. ssid: 'aiot',
  4. password: '12345678',
  5. success: function(){
  6. console.log( 'wifi connected');
  7. }
  8. });
  9. var info = network.getInfo();
  10. var type = network.getType();
  11. var status = network.getStatus();
  12. network.on( 'connect', function() {
  13. console.log( 'wifi connect event');
  14. });
  15. network.on( 'disconnect', function() {
  16. console.log( 'wifi disconnect event');
  17. });
  18. network.close();

该接口可以用来管理网络,获取网络信息,监听网络事件等。

事件

方法

获取网络类型。

WiFi连接网络。

WiFi信息获取。

WiFi关闭。

获取网络状态。

注册网络事件回调函数。

事件:'connect'

如果是WiFi网络,WiFi网络连接成功后,会触发'connect'事件。

事件:'disconnect'

如果是WiFi网络,WiFi网络断开连接时,会触发'disconnect'事件。

network.getType()

获取网络连接类型。

返回值

  • String类型,网络类型,返回值:WiFi, 2G, 3G, 4G, 5G, unknown, none。

network.connect(Object option)

如果是WiFi网络,连接网络。非WiFi网络调用无效。

入参

Object类型,其参数有:

属性

类型

必填

描述

ssid

String

要连接热点的ssid

password

String

要连接热点的password

success

Function

调用该接口成功后的回调函数

fail

Function

调用该接口失败后的回调函数

network.getInfo()

获取网络信息。

返回值

Object类型,如果是WiFi网络, 其属性有:

属性

类型

描述

type

String

默认为'wifi'

ssid

String

已连接热点的ssid

bssid

String

已连接热点的bssid

rssi

Number

WiFi信号强度

ip

String

IP地址

Object类型,如果是Cellular网络,其属性有:

属性

类型

描述

type

String

默认为'cellular'

imei

String

国际移动设备识别码

sn

String

手机序列号

sim

Object

Integrate circuit card identity 集成电路卡识别码即SIM卡卡号,具体参数见下表

rssi

String

信号强度值

snr

String

信噪比

rsrp

String

Reference Signal Receiving Power,参考信号接收功率

rsrq

String

RSRQ(Reference Signal Receiving Quality)表示LTE参考信号接收质量

cqi

String

CQI是信道质量的信息指示,代表当前信道质量的好坏,和信道的信噪比大小相对应,取值范围0~31

sim说明

Object类型,具体属性为:

属性

类型

描述

iccid

String

Integrate circuit card identity 集成电路卡识别码即SIM卡卡号

network.disconnect()

如果是WiFi网络, 断开网络连接。

network.getStatus()

获取网络连接状态。

返回值

Object类型,具体属性为:

属性

类型

描述

status

String

网络状态,返回值:'connect', 'disconnect', 'connecting'

network.on(String event, Function callback)

注册网络事件回调函数。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

2、udp接口

示例代码

  1. var udp = require( 'udp');
  2. var udpSocket = udp.createSocket();
  3. function arrayToString(fileData) {
  4. var dataString = "";
  5. for ( var i = 0; i < fileData.length; i++) {
  6. dataString += String.fromCharCode(fileData[i]);
  7. }
  8. return dataString;
  9. }
  10. udpSocket.on( 'message', function(data, rinfo) {
  11. console.log( 'receive data from ' + rinfo.host + ' port: ' + rinfo.port);
  12. console.log( 'udp socket just receive data is: ' + arrayToString(data));
  13. udpClient.close();
  14. });
  15. udpSocket.on( 'close', function() {
  16. console.log( 'udp close');
  17. });
  18. udpSocket.on( 'error', function(err) {
  19. console.log( 'udp error ' + err);
  20. });
  21. setInterval( function() {
  22. udpSocket.send({
  23. address: '127.0.0.1',
  24. port: 50000,
  25. message: 'hello, this is amp',
  26. success: function() {
  27. console.log( 'send success');
  28. }
  29. });
  30. }, 2000);
  31. // bind port & start to receive message
  32. udpSocket.bind();

2.1、createSocket()

创建一个 UDP Socket 实例。

返回值

一个 UDP Socket 实例。

2.2、UDPSocket 实例

事件

socket关闭时,会触发close事件。

socket数据发送成功后,会触发send事件。

接收到新的数据包时,会触发message事件。

发生错误时,会触发error事件。

属性

本地绑定的端口。

方法

绑定一个系统随机分配的可用端口,或绑定一个指定的端口号。

向指定的 IP 和 port 发送消息。

关闭 UDP Socket 实例,相当于销毁。

注册 UDP Socket 事件回调回调函数。

事件:'close'

socket关闭时,会触发'close'事件。

事件:'send'

socket数据发送成功后,会触发'send'事件。

事件:'message'

接收到新的数据包时,会触发'message'事件。'message'事件的回调函数参数有:

属性

类型

描述

message

Array

接受到的UDP数据

rinfo

Object

发送端地址信息,详细属性见下面

rinfo属性说明:

属性

类型

描述

host

String

发送端IP地址

port

Number

发送端端口

事件:'error'

发生错误时,会触发'error'事件。'error'事件的回调函数参数有:

属性

类型

描述

error

String

错误信息

UDPSocket.localPort

本地绑定的端口。

UDPSocket.bind(Number port)

绑定一个系统随机分配的可用端口,或绑定一个指定的端口号。调用该接口后,会开始监听并接收UDP数据。

入参

属性

类型

必填

描述

port

Number

指定要绑定的端口号,不传则返回系统随机分配的可用端口

返回值

  • 端口号,Number类型。

UDPSocket.send(Object target)

向指定的 ip地址 和 port 发送消息。

入参

入参为 Object 类型,属性如下:

属性

类型

必填

描述

address

String

要发消息的ip地址

port

Number

要发送消息的端口号

message

String

要发送的数据

success

Function

发送成功时的回调函数

fail

Function

发送失败时的回调函数

UDPSocket.close()

关闭 UDP Socket 实例,相当于销毁。

UDPSocket.on(String event, Function callback)

监听事件。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

3、tcp接口

示例代码

  1. var tcp = require( 'tcp');
  2. function onConnect() {
  3. tcpClient.send({
  4. message: 'hello, this is tcp client test',
  5. success: function() {
  6. console.log( 'tcp send success');
  7. },
  8. fail: function() {
  9. console.log( 'tcp send failed');
  10. }
  11. });
  12. }
  13. var tcpClient = tcp.createClient({
  14. host: '47.101.151.113',
  15. port: 50020,
  16. success: function() {
  17. console.log( 'tcp client connect success');
  18. },
  19. fail: function() {
  20. console.log( 'tcp client connect failed');
  21. }
  22. });
  23. tcpClient.on( 'message', function(data) {
  24. console.log( 'tcp receive data: ' + data);
  25. tcpClient.close();
  26. });
  27. tcpClient.on( 'connect', function() {
  28. console.log( 'tcp client connected');
  29. onConnect();
  30. });
  31. tcpClient.on( 'close', function() {
  32. console.log( 'tcp client closed');
  33. });
  34. tcpClient.on( 'error', function(err) {
  35. console.log( 'tcp client error: ' + err);
  36. });

3.1、createClient(Object options)

创建一个 TCPClient 实例,创建TCP客户端时会连接TCP Server。

入参

Object类型,其属性有:

属性

类型

必填

描述

host

String

需要连接的IP地址或者域名

port

Number

需要连接的端口号

success

Function

连接成功的回调函数

fail

Function

连接失败的回调函数

返回值

3.2、TCPClient 实例

事件

当socket关闭时,触发'close'事件。

当连接到socket服务器时,触发'connect'事件。

当连接断开时,触发'disconnect'事件。

当socket接收到数据时,触发'message'事件。

当socket通信过程中遇到错误时,触发'error'事件。

属性

本地绑定的端口号。

方法

向TCP Server 发送消息。

关闭 TCP Client 实例,相当于销毁。

注册 TCP Client 事件回调函数。

事件:'close'

当socket关闭时,'close'事件触发。

事件:'connect'

当连接到socket服务器时,'connect'事件触发。

事件:'disconnect'

当连接断开时,'disconnect'事件触发。服务端断开连接、主动断开连接、网络发生异常等都会触发。

事件:'message'

当socket接收到数据时,'message'事件触发。回调函数的参数有:

属性

类型

描述

message

Array

接收到的tcp数据。

事件:'error'

当socket通信过程中遇到错误时,'error'事件触发。'error'事件的回调函数参数有:

属性

类型

描述

error

String

错误信息

TCPClient.localPort

本地绑定的端口号,该端口号为系统自动分配。

TCPClient.send(Object option)

向TCP Server 发送消息。

入参

入参为 Object 类型,属性有:

属性

类型

必填

描述

message

String | Array

要发送的数据

success

Function

发送成功的回调函数

fail

Function

发送失败的回调函数

TCPClient.reconnect()

当发生 'disconnect'事件 时,可以使用该接口主动连接。

TCPClient.close()

关闭 UDP Socket 实例,断开连接。

TCPClient.on(String event, Function callback)

监听事件。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

4、http接口

示例代码

  1. var http = require( 'http');
  2. http.request({
  3. url: 'http://appengine.oss-cn-hangzhou.aliyuncs.com/httpTest.txt',
  4. method: 'GET',
  5. headers: {
  6. 'content-type': 'application/json'
  7. },
  8. timeout: 30000,
  9. success: function(response) {
  10. console.log(response);
  11. }
  12. });

4.1、request(Object option)

发起一个http请求。

入参

Object类型,属性如下:

属性

类型

必填

说明

url

String

目标服务器URL,包括协议类型、地址、端口、URI等,比如http://appengine.oss-cn-hangzhou.aliyuncs.com/httpTest.txt

暂不支持https协议

headers

Object

设置请求的 HTTP 头对象,默认 {'content-type': 'application/json'},该对象里面的 key 和 value 必须是 String 类型

method

String

默认 GET,暂时只支持GET

dataType

String

期望返回的数据格式,默认 JSON,支持 JSONtextbase64

timeout

Number

超时时间,单位是ms,默认是30000

success

Function

调用成功的回调函数

fail

Function

调用失败的回调函数

success 回调函数

入参为 Object 类型,属性如下:

属性

类型

描述

data

String

响应数据,格式取决于请求时的 dataType 参数

status

Number

响应码

headers

Object

响应头

5、mqtt接口

示例代码

  1. var mqtt = require( 'mqtt');
  2. function ArrayToString(fileData) {
  3. var dataString = "";
  4. for ( var i = 0; i < fileData.length; i++) {
  5. dataString += String.fromCharCode(fileData[i]);
  6. }
  7. return dataString;
  8. }
  9. function onConnect() {
  10. // subscribe
  11. mqttClient.subscribe({
  12. topic: '/hello',
  13. success: function() {
  14. console.log( 'subscribe [/hello] success');
  15. }
  16. });
  17. // publish
  18. setInterval( function () {
  19. mqttClient.publish({
  20. topic: '/hello',
  21. message: 'this is AMP mqtt test',
  22. success: function() {
  23. console.log( 'publish [/hello] success');
  24. }
  25. });
  26. }, 2 * 1000);
  27. }
  28. // create mqtt client
  29. var mqttClient = mqtt.createClient({
  30. host: 'mqtt.eclipse.org',
  31. port: 1883,
  32. username: 'aiot',
  33. password: '123',
  34. success: function() {
  35. console.log( 'mqtt connected');
  36. },
  37. fail: function() {
  38. console.log( 'mqtt connect failed');
  39. }
  40. });
  41. mqttClient.on( 'connect', function() {
  42. console.log( 'mqtt connected');
  43. onConnect();
  44. });
  45. mqttClient.on( 'message', function(topic, payload) {
  46. console.log( '[' + topic + '] message: ' + ArrayToString(payload));
  47. });

5.1、createClient(Object options)

创建一个 MQTTClient 实例(客户端),创建时会连接 MQTT 服务端。暂不支持TLS。

入参

Object类型,其属性有:

属性

类型

必填

描述

host

String

要连接的MQTT 服务端的地址,可以是ip地址,也可以是域名

port

Number

要连接的MQTT 服务端的端口号,默认为1883

clientId

String

设置clientId,默认为系统随机生成

username

String

设置username

password

String

设置password

keepalive_interval

Number

设置MQTT心跳时间,单位秒,默认60,最小30秒

success

Function

调用成功的回调函数

fail

Function

调用失败的回调函数

返回值

一个MQTTClient 实例。

5.2、MQTTClient 实例

事件

当mqtt关闭时,触发close事件。

当mqtt连接成功后,触发connect事件。

当mqtt连接断开时,触发'disconnect'事件。

当接收到publish数据时,message事件触发。

当发生错误时,error事件触发。

属性

当前是否连接成功。

方法

订阅topic。

取消订阅topic。

发布消息到指定topic。

关闭MQTT Client实例。

注册MQTT 事件回调函数。

事件:'close'

当mqtt关闭时,触发'close'事件。

事件:'connect'

当mqtt连接成功后,触发'connect'事件。

事件:'disconnect'

当mqtt连接断开时,触发'disconnect'事件。服务端断开连接、主动断开连接、网络发生异常等都会触发该事件。

事件:'message'

当接收到publish数据时,'message'事件触发。回调函数的参数有:

属性

类型

描述

topic

String

接收到数据的topic

message

Array

接收到的数据

事件:'error'

当发生错误时,'error'事件触发。回调函数的参数有:

属性

类型

描述

error

String

错误信息

MQTTClient.connected

Boolean类型,true代表连接成功,false代表连接断开。false时,底层会一直尝试重连。

MQTTClient.subscribe(Object option)

订阅topic。

入参

Object类型,具体属性为:

属性

类型

必填

描述

topic

String

要订阅的topic

qos

Number

QoS订阅等级,默认为0

success

Function

订阅成功时的回调函数

fail

Function

订阅失败时的回调函数

MQTTClient.unsubscribe(Object option)

取消订阅的topic。

入参

Object类型,具体属性为:

属性

类型

必填

描述

topic

String

要取消订阅的topic

success

Function

取消订阅成功的回调函数

fail

Function

取消订阅成功的回调函数

MQTTClient.publish(Object option)

向指定topic发布消息。

入参

Object类型,具体属性为:

属性

类型

必填

描述

topic

String

要发布消息的topic

message

String | Array

要发送的数据

qos

Number

QoS订阅等级,默认为0

success

Function

发布消息成功时的回调函数

fail

Function

发布消息失败时的回调函数

MQTTClient.close()

关闭MQTTClient实例。

MQTTClient.on(String event, Function callback)

监听事件。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

事件类型

事件类型

描述

close

mqtt关闭事件

connect

连接上mqtt服务端事件

message

接收到新的publish消息事件

error

发生错误事件

开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3天前
|
开发框架 JavaScript 中间件
中间件应用Koa.js(Node.js)
我们添加了两个中间件。第一个中间件记录请求的开始时间,并在下一个中间件执行完毕后计算并打印出请求的总时间。第二个中间件与之前的示例相同,它设置响应体为 "Hello World"
17 6
|
1天前
|
JavaScript 前端开发 测试技术
编写JavaScript模块化代码主要涉及将代码分割成不同的文件或模块,每个模块负责处理特定的功能或任务
【5月更文挑战第10天】编写JavaScript模块化代码最佳实践:使用ES6模块或CommonJS(Node.js),组织逻辑相关模块,避免全局变量,封装细节。利用命名空间和目录结构,借助Webpack处理浏览器环境的模块。编写文档和注释,编写单元测试以确保代码质量。通过这些方法提升代码的可读性和可维护性。
7 3
|
2天前
|
安全
AC/DC电源模块在通信与网络设备中的应用的研究
AC/DC电源模块在通信与网络设备中的应用的研究
AC/DC电源模块在通信与网络设备中的应用的研究
|
2天前
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
|
2天前
|
监控 安全 算法
网络安全与信息安全:防范漏洞、应用加密技术及提升安全意识
【5月更文挑战第8天】 在数字化时代,网络安全与信息安全已成为我们不可忽视的问题。本文将深入探讨网络安全漏洞的产生原因及其危害,加密技术的种类和应用,以及提升个人和企业的安全意识的重要性。通过对这些方面的知识分享,旨在帮助读者更好地理解网络安全的重要性,提高防范意识,保护个人信息和数据安全。
|
3天前
|
JavaScript 中间件 API
中间件应用Express.js(Node.js)
我们定义了一个名为 `logger` 的中间件函数。它接受请求对象、响应对象以及下一个中间件函数作为参数。当接收到请求时,它会打印出请求的 HTTP 方法和 URL,然后调用 `next()` 函数来将控制权传递给下一个中间件或路由处理器。我们使用 `app.use()` 方法将 `logger` 中间件添加到了应用级别的中间件堆栈中,这意味着它将对所有请求生效。
10 3
|
3天前
|
存储 安全 光互联
|
4天前
|
网络安全 数据安全/隐私保护 Linux
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套B模块-2
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套B模块
|
4天前
|
网络虚拟化 网络协议 Windows
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套B模块-1
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套B模块
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套B模块-1
|
4天前
|
数据安全/隐私保护 网络协议 网络虚拟化
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套A模块
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套A模块
【题目】2023年全国职业院校技能大赛 GZ073 网络系统管理赛项赛题第3套A模块