跳转至

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://183.193.243.90:9012/www/test1.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
    {
        socket.end("goodbye",fun_close)
    })
    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);

Page(page);

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);

评论