aardio 文档

web.socket.jsonClient 库模块帮助文档

WebSocketJsonClientObject 成员列表

WebSocketJsonClientObject.?

远程对象名或远程方法名字,
作为函数调用时返回一个调用对象,
通过指定返回调用对象的 end 属性定义调用结束回调函数,例如:
ret.end=function(result,err){

}
回调参数 result 为调用返回值,err 为错误信息,
如果调和成功,err参数为null

返回对象:WebSocketJsonClientObject

WebSocketJsonClientObject.done

通过远程函数调用返回对象的 done 属性判断调用是否完成。
注意出错时则 done 可能不会设为 true,应在 rpc.onError 回调中处理这种情况。

WebSocketJsonClientObject.end

WebSocketJsonClientObject.end = function(result,err){
    /*可通过远程函数调用返回对象的 end 属性指定一个调用完成触发的回调函数。  
回调参数 result 为远程调用返回值,err 为错误对象,  
调用成功 err 参数为null*/
}

WebSocketJsonClientObject.rpc

WebSocket客户端对象
此对象的成员谨慎改动

返回对象:websocketjsonClientrpcObject

web.socket 成员列表

web.socket.jsonClient

WebSocket / JSON-RPC 2.0 单线程异步客户端

web.socket.jsonClient()

返回对象:websocketjsonClientObject

websocketjsonClientObject 成员列表

websocketjsonClientObject.?

远程对象名或远程方法名字,

返回对象:WebSocketJsonClientObject

websocketjsonClientObject.connect("ws://")

重新连接到WebSocket服务端
参数指定WebSocket服务端网址,例如 "ws://localhost:7511"
如果不指定参数,则获取上次调用此函数指定的网址参数,
如果之前也没有指定网址则抛出异常

websocketjsonClientObject.on("close",proc)

websocketjsonClientObject.on("close",function(e){  
    /*连接被关闭  
e.code为错误代码e.reason为错误原因*/  
})

websocketjsonClientObject.on("error",proc)

websocketjsonClientObject.on("error",function(errMessage,rpcError){  
    /*发生错误,errMessage 为错误信息。  
如果服务端按 jsonrpc 协议返回 error 对象,  
则 rpcError 有值,包含 messge,code 字段。*/  
})

websocketjsonClientObject.on("fragment",proc)

websocketjsonClientObject.on("fragment",function(msg){  
   /*收到分片数据  
第一个数据包使用msg.type指明类型,参考WebSocket协议规范  
后续数据包msg.type为0,最后一个数据包msg.fin为1  

如果不指定这个回调函数,则自动并接分片数据后触发onMessage事件*/   
})

websocketjsonClientObject.on("message",proc)

websocketjsonClientObject.on("message",function(msg){  
    /*收到服务端数据  
msg.type为1时msg.data为文本,  
否则msg.data为字节数组(buffer类型)*/  
})

websocketjsonClientObject.on("open",proc)

websocketjsonClientObject.on("open",function(){  
    /*已打开连接*/       
}

websocketjsonClientObject.on(method,proc)

websocketjsonClientObject.on("/*需要监听的Rpc通知事件名字*/",function(param){  

})

websocketjsonClientObject.rpc

WebSocket客户端对象
此对象的成员谨慎改动

返回对象:websocketjsonClientrpcObject

websocketjsonClientrpcObject 成员列表

websocketjsonClientrpcObject.afterJsonStringify

websocketjsonClientrpcObject.afterJsonStringify = function(jsonData){
    /*可以在这里加密客户端JSON,返回null中止本次调用*/
    return jsonData;
}

websocketjsonClientrpcObject.beforeJsonParse

websocketjsonClientrpcObject.beforeJsonParse = function(jsonData){
    /*可以在这里解密服务端数据,返回null中止本次调用*/
    return jsonData;
}

websocketjsonClientrpcObject.beforeRequest(请求数据)

websocketjsonClientrpcObject.beforeRequest = function(reqData){
    /*此回调事件在发送请求前触发  
reqData.params是即将发送的参数*/
    return reqData;
}

websocketjsonClientrpcObject.beginTrans()

开始批量调用
之后的所有RPC调用不提交服务器,
直到调用commitTrans函数

websocketjsonClientrpcObject.close()

关闭连接
可选增加2个参数指定发送给服务器的关闭帧附加数据:
参数@1为数值类型的错误代码,参数@2为字符串类型错误描述

websocketjsonClientrpcObject.commitTrans()

完成批量调用并提交到服务器

websocketjsonClientrpcObject.connect("ws://")

重新连接到WebSocket服务端
参数指定WebSocket服务端网址,例如 "ws://localhost:7511"
如果不指定参数,则获取上次调用此函数指定的网址参数,
如果之前也没有指定网址则抛出异常

websocketjsonClientrpcObject.headers

其他HTTP请求头
值可以是文本或数组、或键值对组成的表
请求时会调用 web.joinHeaders()函数拼接并转换HTTP头
该函数支持的类型和格式这个属性都可以支持

websocketjsonClientrpcObject.heartbeatData

单向心跳发送的数据,默认为空数据
这个值修改以后,只能在下次调用connect函数才会生效

websocketjsonClientrpcObject.heartbeatInterval

客户端主动发送心跳间隔,默认为30秒,
设为-1时禁用客户端心跳,注意某些服务端收到心跳包会报错,这时建议关掉心跳,
此属性值修改以后,只能在下次调用connect函数才会生效

websocketjsonClientrpcObject.heartbeatType

单向心跳发送的的帧类型,
默认为0xA,也就是单向心跳 Pong 帧
这个值修改以后,只能在下次调用connect函数才会生效

websocketjsonClientrpcObject.isClosed()

套接字是否已关闭

websocketjsonClientrpcObject.isConnected()

套接字是否已连接并准备就绪(已与服务器握手成功)

websocketjsonClientrpcObject.originUrl

浏览器启动WebSocket客户端的网址
一些WebSocket服务器根据这个判断是不是允许连接,
所以有时候设置这个很重要
默认使用WebSocket网址,并把 前面的ws://改为http://

websocketjsonClientrpcObject.protocol

应用程序支持的协议列表,默认为"chat"

websocketjsonClientrpcObject.readyState

连接状态,
0为等待连接,1为已连接并准备就绪,2为正在关闭,3为已关闭
只有成功通过WebSocket协议握手以后readyState才会被置为1
这与socket.readyState连接成功就会置为1是不同的

websocketjsonClientrpcObject.responseHeaders

服务端响应的HTTP头
这是一个表对象,键名都已转为小写

websocketjsonClientrpcObject.rollbackTrans()

撤消尚未提交的批量调用

websocketjsonClientrpcObject.socket

异步套接字对象
在关闭连接状态下此属性的值为null
应由对象自动打开或删除套接字对象,调用者不可改动此属性的值

返回对象:tcpaclientObject

websocketjsonClientrpcObject.url

上次成功连接的网址
也可以用于指定下次连接的默认网址

websocketjsonClientrpcObject.userAgent

客户端应用程序代理头
默认为"Mozilla/5.0"

websocketjsonClientrpcObject.varargs

默认值为true,
值为true时将不定个数的参数放入数组发送给服务端
值为false时直接将单个参数发送给服务端

JSON-RPC 2.0一个会制造混乱的地方:
如果params是一个数组,并没有规定是展开为一个参数,还是作为一个数组参数。

目前aardio的RPC服务端会负责展开数组作为多个参数,
但客户端需要在这里手动设置

websocketjsonClientrpcObject.version

值为JSON-RPC协议版本:"2.0"
不应该修改这个值

websocketjsonClientrpcObject.waitForConnected(关联窗口句柄,超时)

等待连接到WebSocket服务端
所有参数可选,超时以毫秒为单位,

连接成功返回true,失败返回false或null

websocketjsonClientrpcObject.xcall(method,param)

websocketjsonClientrpcObject.xcall("Page.navigate",{  
    url = "网址"  
}).end = function(result,err){  
    /*调用JSON-RPC服务端的指定方法  
服务器应答后回调此函数返回值的成员函数:end函数  
end函数有2个回调参数,参数@1为result,参数@2为err  
失败err参数非空*/  
}

Markdown 格式