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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
181 77
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
126 62
|
19天前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
44 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
2天前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
1月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
71 31
|
1月前
|
存储 监控 物联网
计算机网络的应用
计算机网络已深入现代生活的多个方面,包括通信与交流(电子邮件、即时通讯、社交媒体)、媒体与娱乐(在线媒体、在线游戏)、商务与经济(电子商务、远程办公)、教育与学习(在线教育平台)、物联网与智能家居、远程服务(远程医疗、智能交通系统)及数据存储与处理(云计算、数据共享与分析)。这些应用极大地方便了人们的生活,促进了社会的发展。
57 2
计算机网络的应用
|
26天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
60 8
|
1月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
1月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
47 2