远程对象名或远程方法名字,
作为函数调用时返回一个调用对象,
通过指定返回调用对象的 end 属性定义调用结束回调函数,例如:
ret.end=function(result,err){
}
回调参数 result 为调用返回值,err 为错误信息,
如果调和成功,err参数为null
返回对象:WebSocketJsonClientObject
通过远程函数调用返回对象的 done 属性判断调用是否完成。
注意出错时则 done 可能不会设为 true,应在 rpc.onError 回调中处理这种情况。
WebSocketJsonClientObject.end = function(result,err){
/*可通过远程函数调用返回对象的 end 属性指定一个调用完成触发的回调函数。
回调参数 result 为远程调用返回值,err 为错误对象,
调用成功 err 参数为null*/
}
WebSocket客户端对象
此对象的成员谨慎改动
返回对象:websocketjsonClientrpcObject
WebSocket / JSON-RPC 2.0 单线程异步客户端
返回对象:websocketjsonClientObject
远程对象名或远程方法名字,
返回对象:WebSocketJsonClientObject
重新连接到WebSocket服务端
参数指定WebSocket服务端网址,例如 "ws://localhost:7511"
如果不指定参数,则获取上次调用此函数指定的网址参数,
如果之前也没有指定网址则抛出异常
websocketjsonClientObject.on("close",function(e){
/*连接被关闭
e.code为错误代码e.reason为错误原因*/
})
websocketjsonClientObject.on("error",function(errMessage,rpcError){
/*发生错误,errMessage 为错误信息。
如果服务端按 jsonrpc 协议返回 error 对象,
则 rpcError 有值,包含 messge,code 字段。*/
})
websocketjsonClientObject.on("fragment",function(msg){
/*收到分片数据
第一个数据包使用msg.type指明类型,参考WebSocket协议规范
后续数据包msg.type为0,最后一个数据包msg.fin为1
如果不指定这个回调函数,则自动并接分片数据后触发onMessage事件*/
})
websocketjsonClientObject.on("message",function(msg){
/*收到服务端数据
msg.type为1时msg.data为文本,
否则msg.data为字节数组(buffer类型)*/
})
websocketjsonClientObject.on("open",function(){
/*已打开连接*/
}
websocketjsonClientObject.on("/*需要监听的Rpc通知事件名字*/",function(param){
})
WebSocket客户端对象
此对象的成员谨慎改动
返回对象:websocketjsonClientrpcObject
websocketjsonClientrpcObject.afterJsonStringify = function(jsonData){
/*可以在这里加密客户端JSON,返回null中止本次调用*/
return jsonData;
}
websocketjsonClientrpcObject.beforeJsonParse = function(jsonData){
/*可以在这里解密服务端数据,返回null中止本次调用*/
return jsonData;
}
websocketjsonClientrpcObject.beforeRequest = function(reqData){
/*此回调事件在发送请求前触发
reqData.params是即将发送的参数*/
return reqData;
}
开始批量调用
之后的所有RPC调用不提交服务器,
直到调用commitTrans函数
关闭连接
可选增加2个参数指定发送给服务器的关闭帧附加数据:
参数@1为数值类型的错误代码,参数@2为字符串类型错误描述
完成批量调用并提交到服务器
重新连接到WebSocket服务端
参数指定WebSocket服务端网址,例如 "ws://localhost:7511"
如果不指定参数,则获取上次调用此函数指定的网址参数,
如果之前也没有指定网址则抛出异常
其他HTTP请求头
值可以是文本或数组、或键值对组成的表
请求时会调用 web.joinHeaders()函数拼接并转换HTTP头
该函数支持的类型和格式这个属性都可以支持
单向心跳发送的数据,默认为空数据
这个值修改以后,只能在下次调用connect函数才会生效
客户端主动发送心跳间隔,默认为30秒,
设为-1时禁用客户端心跳,注意某些服务端收到心跳包会报错,这时建议关掉心跳,
此属性值修改以后,只能在下次调用connect函数才会生效
单向心跳发送的的帧类型,
默认为0xA,也就是单向心跳 Pong 帧
这个值修改以后,只能在下次调用connect函数才会生效
套接字是否已关闭
套接字是否已连接并准备就绪(已与服务器握手成功)
浏览器启动WebSocket客户端的网址
一些WebSocket服务器根据这个判断是不是允许连接,
所以有时候设置这个很重要
默认使用WebSocket网址,并把 前面的ws://改为http://
应用程序支持的协议列表,默认为"chat"
连接状态,
0为等待连接,1为已连接并准备就绪,2为正在关闭,3为已关闭
只有成功通过WebSocket协议握手以后readyState才会被置为1
这与socket.readyState连接成功就会置为1是不同的
服务端响应的HTTP头
这是一个表对象,键名都已转为小写
撤消尚未提交的批量调用
异步套接字对象
在关闭连接状态下此属性的值为null
应由对象自动打开或删除套接字对象,调用者不可改动此属性的值
上次成功连接的网址
也可以用于指定下次连接的默认网址
客户端应用程序代理头
默认为"Mozilla/5.0"
默认值为true,
值为true时将不定个数的参数放入数组发送给服务端
值为false时直接将单个参数发送给服务端
JSON-RPC 2.0一个会制造混乱的地方:
如果params是一个数组,并没有规定是展开为一个参数,还是作为一个数组参数。
目前aardio的RPC服务端会负责展开数组作为多个参数,
但客户端需要在这里手动设置
值为JSON-RPC协议版本:"2.0"
不应该修改这个值
等待连接到WebSocket服务端
所有参数可选,超时以毫秒为单位,
连接成功返回true,失败返回false或null
websocketjsonClientrpcObject.xcall("Page.navigate",{
url = "网址"
}).end = function(result,err){
/*调用JSON-RPC服务端的指定方法
服务器应答后回调此函数返回值的成员函数:end函数
end函数有2个回调参数,参数@1为result,参数@2为err
失败err参数非空*/
}