JavaScript輕應用提供了網絡管理相關的功能,APP可以通過JSAPI擷取網絡相關的資訊,并且可以接收網絡連接配接、斷開的事件。
另外,輕應用也提供了通用的udp、tcp、http、mqtt等網絡連接配接功能。
1、network接口
示例代碼
- var network = require('network');
- network.connect({
- ssid: 'aiot',
- password: '12345678',
- success: function(){
- console.log('wifi connected');
- }
- });
- var info = network.getInfo();
- var type = network.getType();
- var status = network.getStatus();
- network.on('connect', function() {
- console.log('wifi connect event');
- network.on('disconnect', function() {
- console.log('wifi disconnect event');
- network.close();
該接口可以用來管理網絡,擷取網絡資訊,監聽網絡事件等。
事件
方法
擷取網絡類型。
WiFi連接配接網絡。
WiFi資訊擷取。
WiFi關閉。
擷取網絡狀态。
注冊網絡事件回調函數。
如果是WiFi網絡,WiFi網絡連接配接成功後,會觸發'connect'事件。
如果是WiFi網絡,WiFi網絡斷開連接配接時,會觸發'disconnect'事件。
擷取網絡連接配接類型。
傳回值
- String類型,網絡類型,傳回值:WiFi, 2G, 3G, 4G, 5G, unknown, none。
如果是WiFi網絡,連接配接網絡。非WiFi網絡調用無效。
入參
Object類型,其參數有:
屬性 | 類型 | 必填 | 描述 |
ssid | String | 是 | 要連接配接熱點的ssid |
password | 要連接配接熱點的password | ||
success | Function | 否 | 調用該接口成功後的回調函數 |
fail | 調用該接口失敗後的回調函數 |
擷取網絡資訊。
Object類型,如果是WiFi網絡, 其屬性有:
type | 預設為'wifi' | |
已連接配接熱點的ssid | ||
bssid | 已連接配接熱點的bssid | |
rssi | Number | WiFi信号強度 |
ip | IP位址 |
Object類型,如果是Cellular網絡,其屬性有:
預設為'cellular' | ||
imei | 國際移動裝置識别碼 | |
sn | 手機序列号 | |
sim | Object | Integrate circuit card identity 內建電路卡識别碼即SIM卡卡号,具體參數見下表 |
信号強度值 | ||
snr | 信噪比 | |
rsrp | Reference Signal Receiving Power,參考信号接收功率 | |
rsrq | RSRQ(Reference Signal Receiving Quality)表示LTE參考信号接收品質 | |
cqi | CQI是信道品質的資訊訓示,代表目前信道品質的好壞,和信道的信噪比大小相對應,取值範圍0~31 |
sim說明
Object類型,具體屬性為:
iccid | Integrate circuit card identity 內建電路卡識别碼即SIM卡卡号 |
如果是WiFi網絡, 斷開網絡連接配接。
擷取網絡連接配接狀态。
status | 網絡狀态,傳回值:'connect', 'disconnect', 'connecting' |
network.on(String event, Function callback)
event | 注冊的事件名稱 | ||
callback | 監聽事件的回調函數 |
2、udp接口
- var udp = require('udp');
- var udpSocket = udp.createSocket();
- function arrayToString(fileData) {
- var dataString = "";
- for (var i = 0; i < fileData.length; i++) {
- dataString += String.fromCharCode(fileData[i]);
- return dataString;
- udpSocket.on('message', function(data, rinfo) {
- console.log('receive data from ' + rinfo.host + ' port: ' + rinfo.port);
- console.log('udp socket just receive data is: ' + arrayToString(data));
- udpClient.close();
- udpSocket.on('close', function() {
- console.log('udp close');
- udpSocket.on('error', function(err) {
- console.log('udp error ' + err);
- setInterval(function() {
- udpSocket.send({
- address: '127.0.0.1',
- port: 50000,
- message: 'hello, this is amp',
- success: function() {
- console.log('send success');
- }, 2000);
- // bind port & start to receive message
- udpSocket.bind();
2.1、createSocket()
建立一個 UDP Socket 執行個體。
一個 UDP Socket 執行個體。
2.2、UDPSocket 執行個體
socket關閉時,會觸發close事件。
socket資料發送成功後,會觸發send事件。
接收到新的資料包時,會觸發message事件。
發生錯誤時,會觸發error事件。
本地綁定的端口。
綁定一個系統随機配置設定的可用端口,或綁定一個指定的端口号。
向指定的 IP 和 port 發送消息。
關閉 UDP Socket 執行個體,相當于銷毀。
注冊 UDP Socket 事件回調回調函數。
socket關閉時,會觸發'close'事件。
socket資料發送成功後,會觸發'send'事件。
接收到新的資料包時,會觸發'message'事件。'message'事件的回調函數參數有:
message | Array | 接受到的UDP資料 |
rinfo | 發送端位址資訊,詳細屬性見下面 |
rinfo屬性說明:
host | 發送端IP位址 | |
port | 發送端端口 |
發生錯誤時,會觸發'error'事件。'error'事件的回調函數參數有:
error | 錯誤資訊 |
綁定一個系統随機配置設定的可用端口,或綁定一個指定的端口号。調用該接口後,會開始監聽并接收UDP資料。
指定要綁定的端口号,不傳則傳回系統随機配置設定的可用端口 |
- 端口号,Number類型。
向指定的 ip位址 和 port 發送消息。
入參為 Object 類型,屬性如下:
address | 要發消息的ip位址 | ||
要發送消息的端口号 | |||
要發送的資料 | |||
發送成功時的回調函數 | |||
發送失敗時的回調函數 |
UDPSocket.on(String event, Function callback)
監聽事件。
3、tcp接口
- var tcp = require('tcp');
- function onConnect() {
- tcpClient.send({
- message: 'hello, this is tcp client test',
- console.log('tcp send success');
- },
- fail: function() {
- console.log('tcp send failed');
- var tcpClient = tcp.createClient({
- host: '47.101.151.113',
- port: 50020,
- console.log('tcp client connect success');
- console.log('tcp client connect failed');
- tcpClient.on('message', function(data) {
- console.log('tcp receive data: ' + data);
- tcpClient.close();
- tcpClient.on('connect', function() {
- console.log('tcp client connected');
- onConnect();
- tcpClient.on('close', function() {
- console.log('tcp client closed');
- tcpClient.on('error', function(err) {
- console.log('tcp client error: ' + err);
3.1、createClient(Object options)
建立一個
TCPClient執行個體,建立TCP用戶端時會連接配接TCP Server。
Object類型,其屬性有:
需要連接配接的IP位址或者域名 | |||
需要連接配接的端口号 | |||
連接配接成功的回調函數 | |||
連接配接失敗的回調函數 |
3.2、TCPClient 執行個體
當socket關閉時,觸發'close'事件。
當連接配接到socket伺服器時,觸發'connect'事件。
當連接配接斷開時,觸發'disconnect'事件。
當socket接收到資料時,觸發'message'事件。
當socket通信過程中遇到錯誤時,觸發'error'事件。
本地綁定的端口号。
向TCP Server 發送消息。
關閉 TCP Client 執行個體,相當于銷毀。
注冊 TCP Client 事件回調函數。
當socket關閉時,'close'事件觸發。
當連接配接到socket伺服器時,'connect'事件觸發。
當連接配接斷開時,'disconnect'事件觸發。服務端斷開連接配接、主動斷開連接配接、網絡發生異常等都會觸發。
當socket接收到資料時,'message'事件觸發。回調函數的參數有:
接收到的tcp資料。 |
當socket通信過程中遇到錯誤時,'error'事件觸發。'error'事件的回調函數參數有:
本地綁定的端口号,該端口号為系統自動配置設定。
入參為 Object 類型,屬性有:
String | Array | |||
發送成功的回調函數 | |||
發送失敗的回調函數 |
TCPClient.reconnect()
當發生
'disconnect'事件時,可以使用該接口主動連接配接。
關閉 UDP Socket 執行個體,斷開連接配接。
TCPClient.on(String event, Function callback)
4、http接口
- var http = require('http');
- http.request({
- url: 'http://appengine.oss-cn-hangzhou.aliyuncs.com/httpTest.txt',
- method: 'GET',
- headers: {
- 'content-type':'application/json'
- timeout: 30000,
- success: function(response) {
- console.log(response);
4.1、request(Object option)
發起一個http請求。
Object類型,屬性如下:
說明 | |||
url | 目标伺服器URL,包括協定類型、位址、端口、URI等,比如http://appengine.oss-cn-hangzhou.aliyuncs.com/httpTest.txt 暫不支援https協定 | ||
headers | 設定請求的 HTTP 頭對象,預設 {'content-type': 'application/json'},該對象裡面的 key 和 value 必須是 String 類型 | ||
method | 預設 GET,暫時隻支援GET | ||
dataType | 期望傳回的資料格式,預設 JSON,支援 JSON、text、base64 | ||
timeout | 逾時時間,機關是ms,預設是30000 | ||
調用成功的回調函數 | |||
調用失敗的回調函數 |
success 回調函數
data | 響應資料,格式取決于請求時的 dataType 參數 | |
響應碼 | ||
響應頭 |
5、mqtt接口
- var mqtt = require('mqtt');
- function ArrayToString(fileData) {
- // subscribe
- mqttClient.subscribe({
- topic: '/hello',
- console.log('subscribe [/hello] success');
- // publish
- setInterval(function () {
- mqttClient.publish({
- message: 'this is AMP mqtt test',
- console.log('publish [/hello] success');
- }, 2 * 1000);
- // create mqtt client
- var mqttClient = mqtt.createClient({
- host: 'mqtt.eclipse.org',
- port: 1883,
- username: 'aiot',
- password: '123',
- console.log('mqtt connected');
- console.log('mqtt connect failed');
- mqttClient.on('connect', function() {
- mqttClient.on('message', function(topic, payload) {
- console.log('[' + topic + '] message: ' + ArrayToString(payload));
5.1、createClient(Object options)
MQTTClient執行個體(用戶端),建立時會連接配接 MQTT 服務端。暫不支援TLS。
要連接配接的MQTT 服務端的位址,可以是ip位址,也可以是域名 | |||
要連接配接的MQTT 服務端的端口号,預設為1883 | |||
clientId | 設定clientId,預設為系統随機生成 | ||
username | 設定username | ||
設定password | |||
keepalive_interval | 設定MQTT心跳時間,機關秒,預設60,最小30秒 | ||
一個MQTTClient 執行個體。
5.2、MQTTClient 執行個體
當mqtt關閉時,觸發close事件。
當mqtt連接配接成功後,觸發connect事件。
當mqtt連接配接斷開時,觸發'disconnect'事件。
當接收到publish資料時,message事件觸發。
當發生錯誤時,error事件觸發。
目前是否連接配接成功。
訂閱topic。
取消訂閱topic。
釋出消息到指定topic。
關閉MQTT Client執行個體。
注冊MQTT 事件回調函數。
當mqtt關閉時,觸發'close'事件。
當mqtt連接配接成功後,觸發'connect'事件。
當mqtt連接配接斷開時,觸發'disconnect'事件。服務端斷開連接配接、主動斷開連接配接、網絡發生異常等都會觸發該事件。
當接收到publish資料時,'message'事件觸發。回調函數的參數有:
topic | 接收到資料的topic | |
接收到的資料 |
當發生錯誤時,'error'事件觸發。回調函數的參數有:
Boolean類型,true代表連接配接成功,false代表連接配接斷開。false時,底層會一直嘗試重連。
要訂閱的topic | |||
qos | QoS訂閱等級,預設為0 | ||
訂閱成功時的回調函數 | |||
訂閱失敗時的回調函數 |
取消訂閱的topic。
要取消訂閱的topic | |||
取消訂閱成功的回調函數 | |||
向指定topic釋出消息。
要釋出消息的topic | |||
釋出消息成功時的回調函數 | |||
釋出消息失敗時的回調函數 |
關閉MQTTClient執行個體。
事件類型
開發者技術支援
如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs8mTXpVVOZVWohGMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4YDOyUjM0YTM1ETMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
更多技術與解決方案介紹,請通路阿裡雲AIoT首頁
https://iot.aliyun.com/