aardio 文档
aardio 范例: 创建WebSocket/JSON-RPC 服务端与Node.js交互的例子
//Node.js 通过 JSON-RPC(WebSocket) 调用 aardio
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio创建WebSocket/JSON-RPC 服务端与Node.js交互的例子";left=10;top=4;right=774;bottom=467)
winform.add(
txtMessage={cls="edit";left=29;top=22;right=741;bottom=432;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1}
)
/*}}*/
//创建 WebSocket 服务端
import web.socket.server;
var wsrv = web.socket.server();
//创建 JSON-RPC 服务端
import web.socket.jsonServer;
var rpcServer = web.socket.jsonServer(wsrv);
//这里可以自定义WebSocket 服务端可以使用的 URL 路径
wsrv.onUpgradeToWebsocket = function(hSocket,request,response,protocol,origin){
return rpcServer.start(hSocket);
}
//指定 node.js 客户端可以调用的对象和方法
rpcServer.external = {
hello = function(a,b){
winform.txtMessage.print("node.js调用hello函数,参数:",a,b);
return "来自aardio的返回值 " ;
}
aardio = {
print = function(txt){
winform.txtMessage.print( txt );
}
}
}
//启动 WebSocket 服务端
wsrv.start();
import nodeJs;
nodeJs.startEnviron(
wsUrl = wsrv.getUrl();//设置node.js的启动参数
)
var js = /***
var startEnviron = require('startEnviron');
var WebSocket = require('rpc-websockets').Client;
var ws = new WebSocket(startEnviron.wsUrl)
ws.on('open', function() {
ws.call('hello', ['JS传过来的参数1', 'JS传过来的参数2']).then(result=> {
//也可以支持名字空间,注意调用参数必须放到数组里
ws.call("aardio.print",[result]).catch(e=>{
console.log("bm ",e)
});
})
})
***/
//自动安装 JS 代码中引用的模块,如果已经安装了模块,这句代码会自动忽略不执行
nodeJs.prequireByJs(winform.txtMessage,js);
//执行JS代码,nodeJs.execLimit 函数会保证在退出时退出 Node 进程
var node = nodeJs.execLimit(js);
//将 Node 进程标准输出重定向到文本框中
node.logResponse(winform.txtMessage);
winform.show();
win.loopMessage();
Markdown 格式