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

//指定 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 );
		}
	}
} 

//客户端使用HTTP请求切换到WebSocket协议
wsrv.onUpgradeToWebsocket = function(hSocket,request,response,protocol,origin){    
    return rpcServer.start(hSocket);
}

//启动服务端 
wsrv.start();

var ip,rpcPort = wsrv.httpServer.getLocalIp()

import nodeJs;
nodeJs.startEnviron(
	wsUrl = wsrv.getUrl();//设置node.js的启动参数
)

winform.txtMessage.print(wsrv.getUrl())

//找个WebSocket RPC模块装上，首次安装模块耐心等待可能有点慢，
//如果已经安装了模块，这句代码会自动忽略不执行
nodeJs.require("json-rpc-ws")
 
var testjs = /*** 
var startEnviron = require('startEnviron');
var wsRpc = require('json-rpc-ws');
  
var client = wsRpc.createClient();

client.connect(startEnviron.wsUrl, function connected () {

    client.send('hello', ['JS传过来的参数1', 'JS传过来的参数2'], function mirrorReply (error, reply) {

		//也可以支持名字空间，注意调用参数必须放到数组里
        client.send('aardio.print', [reply]);
    });
});
***/

var node = nodeJs.exec(testjs); 

 
winform.show() 
win.loopMessage();
