XPlusAgent MainScreen 가이드
이 화면은 XPlusAgent의 메인 화면에 대한 예시화면이다.
자세한 내용은 doc/92_xFrame5_Browser_Guide.pdf 문서를 참조한다. 브라우저 영역에 대한 샘플은 XPLUS/xplus_browsermain 화면을 참조한다.
예시
화면 스크립트
// XFRAME5BROWSER 프로세스 ID
var XFRAME5_BROWSER_PID = 0;
/**
* 웹소켓 세션이 연결되면 발생하는 이벤트 처리
* @param objInst XPlusWebSockSvr 오브젝트
* @param pRemoteIpAddr 원격지 시스템의 IP 주소
* @param nRemotePortNo 원격지 시스템의 TCP 포트 번호
* @param nSocketKey 원격지 시스템 연결 소켓 키 값
*/
function objWSockSvr_OnConnect(objInst,pRemoteIpAddr,nRemotePortNo,nSocketKey)
{
factory.consoleprint("OnConnect> pRemoteIpAddr = " + pRemoteIpAddr);
factory.consoleprint("OnConnect> nRemotePortNo = " + nRemotePortNo);
factory.consoleprint("OnConnect> nSocketKey = " + nSocketKey);
}
/**
* 웹소켓 세션이 해제되면 발생하는 이벤트 처리
* CloseSession 함수 호출시에는 이벤트가 발생하지 않는다.
* @param objInst XPlusWebSockSvr 오브젝트
* @param pRemoteIpAddr 세션이 해제된 시스템의 IP 주소
* @param nRemotePortNo 세션이 해제된 시스템의 TCP 포트 번호
* @param nSocketKey 원격지 시스템 연결 소켓 키 값
*/
function objWSockSvr_OnClose(objInst,pRemoteIpAddr,nRemotePortNo,nSocketKey)
{
factory.consoleprint("OnClose> pRemoteIpAddr = " + pRemoteIpAddr);
factory.consoleprint("OnClose> nRemotePortNo = " + nRemotePortNo);
factory.consoleprint("OnClose> nSocketKey = " + nSocketKey);
// XFrame5Browser와 연결된 세션 해제시 XPlusAgent 종료함
factory.browserexit();
}
/**
* 웹소켓 서버 데이터 수신 이벤트 처리
* @param objInst XPlusWebSockSvr 오브젝트
* @param pRemoteIpAddr 데이터를 송신한 시스템의 IP 주소
* @param nRemotePortNo 데이터를 송신한 시스템의 TCP 포트 번호
* @param nSocketKey 원격지 시스템 연결 소켓 키 값
* @param nLength 수신한 데이터 길이
* @param pTranKey 수신한 데이터에 대한 Key값, GetData 함수에서 사용됨
*/
function objWSockSvr_OnReceive(objInst,pRemoteIpAddr,nRemotePortNo,nSocketKey,nLength,pDataKey)
{
var strRecvData;
factory.consoleprint("OnReceive> pRemoteIpAddr = " + pRemoteIpAddr);
factory.consoleprint("OnReceive> nRemotePortNo = " + nRemotePortNo);
factory.consoleprint("OnReceive> nSocketKey = " + nSocketKey);
factory.consoleprint("OnReceive> nLength = " + nLength);
factory.consoleprint("OnReceive> pDataKey = " + pDataKey);
strRecvData = objWSockSvr.innerctrl.GetData(pDataKey);
factory.consoleprint("OnReceive> strRecvData = [" + strRecvData + "]");
}
// 브라우서 시작 버튼 이벤트 처리 함수
function btnStartBrowser_on_mouseup(objInst)
{
StartXFrame5Browser();
}
// 브라우서 종룔 버튼 이벤트 처리 함수
function btnStopBrowser_on_mouseup(objInst)
{
if (XFRAME5_BROWSER_PID > 0) {
// 전용 브라우저 강제 종료
factory.killprocessor(XFRAME5_BROWSER_PID);
XFRAME5_BROWSER_PID = 0;
}
}
// xFrameConfig.ini 파일 파라미터 구성
// 브라우저 시작시 트레이 아이콘으로 표시하기 위해 설정
// USE_TRAYICON = TRUE
// 브라우저 초기 숨김 처리를 위해서 설정
// BROWSER_SHOW = FALSE
// 화면 로드 이벤트 처리
function screen_on_load()
{
var nRet;
var strLogDir = "C:\\xFrame5\\log";
factory.showconsoletrace(true);
// 웹소켓 서버 컴포넌트 시작 (9999 TCP 포트번호 사용)
/**
* XPlusWebSockSvr 컴포넌트를 초기화한다.
* @param pLogDir 로그 저장 디렉토리
* @param pLogFilePrefix 로그 파일 이름
* @param pLogLevel 로그 레벨("DEBUG"<"INFO"<"WARN"<"ERROR")
* ("DEBUG"로 지정시에만 송수신 데이터 덤프 로그가 기록됨)
* @param nLogEncFlag 로그 파일 내용 암호화 여부
* @param nBindPortNo Listen TCP 포트 번호
* @return
* 0 : Success
* 1 : Invalid Length Field Length
* 9 : Already Initialized
*/
objWSockSvr.innerctrl.InitXPlusWebSockSvr(strLogDir, "XPlusWebSockSvr", "INFO", 0, 9999);
/**
* 웹소켓 포트를 열고 웹 소켓 접속 대기
* @param nBindPortNo Listen할 TCP 포트 번호 (0 값을 지정할 경우, InitXPlusWebSockSvr 함수에서 지정한 포트 사용)
* @returns 처리 결과 값
* 0: Success
* 1: Invalid Port No
* 2: Fail To Create Socket
* 3: Fail To Socket Listen
* 9: Not Initialized
*/
nRet = objWSockSvr.innerctrl.StartXPlusWebSockSvr(0);
factory.consoleprint("StartXPlusWebSockSvr Value = " + nRet);
if(nRet != 0) {
screen.alert("StartXPlusWebSockSvr() Fail, ErrorCode = " + nRet);
}
btnStartBrowser_on_mouseup();
}
// 화면 닫기전 이벤트 처리
function screen_on_destroy()
{
/**
* XPlusWebSockSvr 소켓을 닫고, 연결된 WebSocket 세션 해제
* @param nCloseSessionFlag 연결되어 있는 WebSocket 세션 해제 여부
* @param nFireEventFlag 세션 해제 이벤트 발생 처리 여부 플래그
* @returns 처리 결과 값
* 0: Success
* 9: Not Initialized
*/
// 웹소켓 서버 컴포넌트 종료 및 연결된 세션 해제
objWSockSvr.innerctrl.StopXPlusWebSockSvr(1, 0);
return 1;
}
/**
* XFrame5Browser 프로세스 시작 처리
*/
function StartXFrame5Browser()
{
var strBrowserPath, arrBrowserParam, strBrowserParam, strStartHtmlUrl, strStartHtmlParam;
// 전용 브라우저 파일 절대 경로
strBrowserPath = "C:\\xFrame5\\xFrame5Browser\\xFrame5Browser(x86)\\xFrame5Browser.exe";
// 전용 브라우저 파리미터 (크롬 실행 파라미터와 동일한 형태)
// 참조 URL: https://peter.sh/experiments/chromium-command-line-switches/
// 로컬에서 html 파일을 수정한 후 크롬으로 확인하고 싶을때 크롬에서 file:// 프로토콜을읽지 못하는 경우가 있다.
// 이옵션으로 수행하면 로컬의 파일을 크롬에서 읽을 수 있다.
// 아래의 --url 파라미테어 file 프로토콜을 사용하는 경우, 반드시 지정해야 한다.
// --allow-file-access-from-files
// 국가별 언어에 따른 크롬 자동번역 팝업을 안뜨게 한다.
// --disable-translate
// AJAX 의 cross-domain 문제를 피해갈 수 있다. (Don't enforce the same-origin policy.)
// --disable-web-security
// 전용 브라우저 시작시 크기 지정. ex) --window-size=300,700
// --window-size=width,height
// 전용 브라우저 시작시 위치 지정. ex) --window-position=10,10
// --window-position=left,top
// 시작시 최대화 상태로 시작
// --start-maximized
// 전용 브라우저 타이틀바 우측 상단 최소화,최대화,닫기 버튼 숨김 처리
// --no-sysmenu
// 전용 브라우저 타이틀바 우측 상단 닫기 버튼을 비활성 처리
// --disable-close-sysmenu
// 브라우저에서 사용할 캐쉬 디렉토리를 지정한다. ex) --cache-path=C:\\xFrame5\\cache
// 지정하지 않은 경우, 메모리 캐쉬 방식을 사용하며, 프로세스 종료시 캐쉬된 내용도 삭제된다.
// --cache-path=캐쉬저장디렉토리절대경로
// 전용 브라우저가 표시할 시작 HTML 파일 URL 및 파라미터 설정
// 기본 XFrame5Browser 브라우저 파라미터 지정
// strBrowserParam = "--allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt";
// 전용 브라우서 시작이 표시할 xFrame5.html 파일에 대한 URL
// HTTP URL 사용시: --url=http://125.133.62.11:8080/xframe5.html;
// FILE URL 사용시: --url=file:///C:/xFrame5/index.html;
// --url=전용브라우저시작시URL
arrBrowserParam = [];
// TSFImeSupport 기능은 크로니엄 76.0.3809.132 까지는 한문
// 입력이 정상이었으나, 77.0.3865.75 버전 이후 한문 입력 및
// 특수 문자 입력시 오류가 발생하는 현상을 회파하기 위한 기능 이름이다.
arrBrowserParam.push("--disable-features=TSFImeSupport");
arrBrowserParam.push("--allow-file-access-from-files");
arrBrowserParam.push("--disable-web-security");
arrBrowserParam.push("--cache-path=C:\\xFrame5\\cache");
strBrowserParam = arrBrowserParam.join(" ");
// 전용 브라우저가 표시할 시작 HTML 파일 URL 및 파라미터 설정
strStartHtmlUrl = "--url=file:///D:/SOFTBASE/HTML/xframe5/terminal.html";
// strStartHtmlUrl = "--url=http://127.0.0.1:80/terminal.html";
// 시작 HTML의 파라미터 지정 필요시 아래의 라인 사용
// strStartHtmlParam = "?xframe_screen_url=/SYS/StartMain&xframe_console=1&xframe_event=1&xframe_param=1";
strStartHtmlParam = "?xframe_screen_url=/TEMPLATE/HTML5/loadmeta&xframe_console=1&xframe_event=1&xframe_param=1";
// strStartHtmlParam = "";
// 전용 브라우저 실행 및 전용 브라우저 프로세스 ID 저장
XFRAME5_BROWSER_PID = factory.winexecex(strBrowserPath + " " + strBrowserParam + " " + strStartHtmlUrl + strStartHtmlParam, true, 0);
factory.consoleprint("XFRAME5_BROWSER_PID = " + XFRAME5_BROWSER_PID);
}