PersimmonM 网络

http request

提供了创建基于http协议的网络API

引入方式:

var http = require('http');
var rq = http.request(
    ...
)

或者直接使用

var rq = pm.request(
    ...
)

参数说明

参数 类型 必填 说明
url String 开发者服务器接口地址
data String,Object 请求的参数
header Object 设置请求的 header
method String 默认为 GET,有效值GET,POST
success Function 收到开发者服务成功返回的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明

参数 类型 说明
data Buffer 开发者服务器返回的数据
statusCode Number 开发者服务器返回的 HTTP 状态码
header Object 开发者服务器返回的 HTTP Response Header

示例代码

var rq = pm.request({
    url: 'http://www.rt-thread.com/service/rt-thread.txt', 
    data: {
        x: '',
        y: ''
    },
    header: {
        "Content-Type":"application/json",
    },
    success: function(res) {
        console.log('request success'),
        console.log(res.data),
        console.log(res.statusCode)
    },
    complete: function(){
        console.log('request complete')  
    },
    fail: function(){
        console.log('request failed')  
    }
})

Net

提供了创建基于流的TCP服务器和客户端的异步网络 API。

引入方式:

var net = require('net');

net.server

  • net.createServer(options, connectionListener)

    创建一个新的TCP服务器,每当有新的client连接后,将触发'connection'事件。

    参数 类型 必填 说明
    options Object 连接设定选项
    connectionListener Function 事件Connection的Listener

    其中options含有以下参数:

    参数 类型 必填 说明
    allowHalfOpen Bool 是否允许半打开,默认false
    readable Bool 是否可读,默认true
    writeable Bool 是否可写,默认true
  • server.listen(port, host, backlog, listenListener)

    启动一个TCP服务监听

    参数 类型 必填 说明
    port Number 客户端连接的port
    host String 客户端连接的host,默认'localhost'
    backlog Number 最大连接数,默认511
    listenListener Function 事件listening的Listener
  • server.listen(options,listenListener)

    启动一个TCP服务监听

    参数 类型 必填 说明
    options Object 客户端连接选项
    listenListener Function 事件listening的Listener

    其中options含有以下参数:

    参数 类型 必填 说明
    port Number 客户端连接的port
    host String 客户端连接的host,默认'localhost'
    backlog Number 最大连接数,默认:由固件配置,最大TCP Socket数 -3
  • server.close(closeListener)

    停止接收新的客户端,当已连接的客户端都关闭后,将触发'close'事件。

    参数 类型 必填 说明
    closeListener Function 事件close的Listener

net.Socket

  • net.Socket(option)

    根据选项,创建一个socket。

    参数 类型 必填 说明
    options Object 创建选项

    其中options含有以下参数:

    参数 类型 必填 说明
    allowHalfOpen Bool 是否允许半打开,默认false
    readable Bool 是否可读,默认true
    writeable Bool 是否可写,默认true
  • net.connect(options,connectListener)/net.createConnections(options,connectListener)

    创建一个新的net.Socket并自动根据options执行socket.connect()进行连接。成功后,connectListener则会成为事件connect的listener。

    当socket连接成功后,每当收到数据,将触发data事件。

    当socket收到FIN package后,将触发end事件。

    参数 类型 必填 说明
    options Object 连接选项
    connectListener Function 事件connect的Listener

    其中options含有以下参数:

    参数 类型 必填 说明
    port Number 指定连接的port
    host String 指定连接的host,默认'localhost'
    family Number IP栈的版本,默认为6,即IPV6
  • net.connection(port,host,connectListener)/net.createConnection(port,host,connectListener)

    创建一个新的net.Socket,并根据指定port和host执行socket.connect()进行连接。成功后,connectListener则会成为事件connect的listener。

    当socket连接成功后,每当收到数据,将触发data事件。

    参数 类型 必填 说明
    port Number 指定连接的port
    host String 指定连接的host,默认'localhost'
    connectListener Function 事件connect的Listener
  • socket.connect(options,connectListener)

    根据options执行socket.connect()进行连接。成功后,connectListener则会成为事件connect的listener。

    当socket连接成功后,每当收到数据,将触发data事件。

    参数 类型 必填 说明
    options Object 连接选项
    connectListener Function 事件connect的Listener

    其中options含有以下参数:

    参数 类型 必填 说明
    port Number 指定连接的port
    host String 指定连接的host,默认'localhost'
    family Number IP栈的版本,默认为6,即IPV6
  • socket.connect(port, host, connectListener)

    根据指定port和host执行socket.connect()进行连接。成功后,connectListener则会成为事件connect的listener。

    当socket连接成功后,每当收到数据,将触发data事件。

    参数 类型 必填 说明
    port Number 指定连接的port
    host String 指定连接的host,默认'localhost'
    connectListener Function 事件connect的Listener
  • socket.write(data, callback)

    发送数据data,发送完毕后执行callback

    参数 类型 必填 说明
    data Buffer,String 需要发送的数据
    callback Function 发送完毕后,执行的回调函数
  • socket.destroy()

    确保在该socket上不再有I/O活动后,销毁socket

  • socket.end(data,callback)

    发送数据data后,执行callback。最后执行socket.destory()销毁socket。

    参数 类型 必填 说明
    data Buffer,String 需要发送的数据
    callback Function 销毁socket后,执行的回调函数
  • socket.pause()

    停止读取数据。

  • socket.resume()

    执行socket.pause()后,恢复读取数据。

  • socket.setTimeout(timeout, callback)

    当socket在指定时间内不活动,即没有读写操作,将触发timeout事件。

    参数 类型 必填 说明
    timeout Number 指定Timeout的大小,单位:毫秒
    callback Function 事件timeout的Listener
  • socket.localAddress

    当socket连接后,返回远程客户端连接的本地 IP 地址字符串。

  • socket.localPort

    当socket连接后,返回用数字表示的本地端口。

  • socket.remoteAddress

    当socket连接后,返回用字符串表示的远程 IP 地址。

  • socket.remoteFamily

    当socket连接后,返回用字符串表示的远程 IP 协议族。'IPv4' 或 'IPv6'

  • socket.remotePort

    当socket连接后,返回用数字表示的远程端口。

示例代码

Server端代码:

var net = require('net');   //调用net module

var port = 6666;    //指定端口号

var fun_read = function(e)     //socket的data事件的listener
{
    console.log("read " + e.length+" bytes :"+e.toString('utf8'));
}

var fun_close = function()     //socket的close事件的listener
{
    console.log("a socket is closed");
}

var fun = function(socket)  //server的connection事件的listener
{
    console.log("a socket is connected");
    socket.on('data',fun_read);     //注册fun_read为socket的data事件的listener
    socket.on('end',function()      //注册function为socket的end事件的listener
    {
        console.log("the socket is closed!");
    });
    socket.write("hello,this is rtt");
    socket.setTimeout(6000,function()   //当6000ms内,socket没有读写操作时,触发timeout事件
    {
        socket.write("sorry.I'm late");
    })
}

var server = net.createServer(fun); //创建server,注册fun为server的connection事件的listener

server.on('close',function()    //注册function为server的close事件的listener
{
    console.log("server has been closed\n");
})

server.listen(port);

Client端代码:

var net = require('net');
var socket = new net.Socket();

var fun_timeout = function ()
{
    console.log("socket timeout");
};
var fun_connect = function ()
{
    console.log('connect success');
    socket.write("hello,this is rtt");
};
var fun_data  = function(res)
{
    console.log("reveive some messages");
};

socket.on("data",fun_data);
socket.connect(8887,'192.168.10.109',fun_connect);

mqtt

提供了 基于发布/订阅范式的消息协议 的异步网络 API。

注:目前仅支持单实例。

引入方式:

var mqtt = require('mqtt');
- mqtt.Client(endpoint, options)

根据endpoint与options,创建一个MQTT Client。
返回:mqtt.client对象。

|  参数 |  类型 | 必填 | 说明 |
| - | - | - | - |
| endpoint | String | 是 | broker的URL地址 |
| options | Object | 否 | 设定选项 |
  • mqtt.connect(endpoint, options)

    根据endpoint与options,创建一个MQTT Client,并连接。 返回:mqtt.client对象。

    参数 类型 必填 说明
    endpoint String broker的URL地址
    options Object 设定选项

    其中options含有以下参数:

    参数 类型 必填 说明
    keepalive Number 设定keepalive时间,默认:60s
    clientId String 客户端ID,默认: 'rtthread' + 随机数(0~999999)
    clean Bool 当下线时,是否获取Qos 1Qos 2消息,默认: true
    reconnectPeriod Number 重连时间间隔,默认: 1000(ms)
    connectTimeout Number 等待连接确认消息ConnAck的最大时间,默认: 30*1000(ms)
    username String broker所需要的名称,如果有
    password String broker所需要的密码,如果有
    will Object 遗言设定

    其中will含有以下参数:

    参数 类型 必填 说明
    topic String 遗言发送目标Topic
    payload String Buffer
    qos Number 遗言的QoS级别,默认:0 ,范围(0~2)
    retain Boolean 设定遗言是否保留,默认: false

mqtt.client

  • client.connect()

    根据之前设定选项连接指定MQTT的Broker,连接成功时,将触发connect事件。

  • client.publish(topic, message, options, callback)

    推送消息。

    参数 类型 必填 说明
    topic String 指定需要推送消息的Topic
    message String/Buffer 需要推送的消息
    options Object 推送设定
    callback Function 在QoS处理完成时触发的回调函数,或者在下一个标记处激发(如果QoS为0)。如果客户端正在断开连接,则会发生错误。

    其中options含有以下参数:

    参数 类型 必填 说明
    qos Number QoS等级,默认:0
    dup Bool 重复标志 ,默认:false
    retain Bool 保存标志,默认:false
  • client.subscribe(topic, options, callback)

    订阅指定Topic。

    参数 类型 必填 说明
    topic String 指定订阅的Topic
    options Object 推送设定
    callback Function 订阅成功后的回调函数

    其中options含有以下参数:

    参数 类型 必填 说明
    qos Number QoS等级,默认:0
  • client.unsubscribe(topic, callback)

    取消订阅指定Topic。

    参数 类型 必填 说明
    topic String 指定取消订阅的Topic
    callback Function 取消订阅成功后的回调函数
  • client.end(callback)

    关闭Client。

    参数 类型 必填 说明
    callback Function 关闭Client成功后的回调函数
  • client.reconnect()

    根据之前的设定,重新连接。

事件

  • connect

    当Client连接成功后,将触发connect事件

  • offline

    当client下线的时候,将触发offline事件

  • message

    当接受到一个publish的信息后,将触发message实现

    回调入参: | 参数 | 类型 | 说明 | | - | - | - | | topic | String | topic的名称 | | message | Buffer | 接受到内容 |

Sample

var page = {
    client : 0,
    /* 此方法在第一次显示窗体前发生 */
    onLoad:function(event){
        var that = this;
        var mqttModule = require("mqtt"); //调用mqtt module

        this.client = mqttModule.Client("tcp://mq.tongxinmao.com:18831", { username: "admin", password: "admin" });    //创建MQTT Client

        this.client.subscribe("Topic_1", { qos: 0 }, function() { console.log("subcribe success") });   //订阅Topic

        this.client.on("message", function(topic, message) { //绑定message事件的Listener
            console.log(topic + " : " + message.toString());
        })

        this.client.on("offline", function() { //绑定offline事件的Listener
            console.log("the client is offline");
        })

        this.client.on("connect", function() { //绑定connect事件的Listener
            console.log("the client is connected");
        })

        this.client.connect();  //建立连接
    },
};

Page(page);