====== XPlusAgent MainScreen 가이드 ====== 이 화면은 XPlusAgent의 메인 화면에 대한 예시화면이다. 자세한 내용은 doc/92_xFrame5_Browser_Guide.pdf 문서를 참조한다. 브라우저 영역에 대한 샘플은 XPLUS/xplus_browsermain 화면을 참조한다. ===== 예시 ===== 템플릿 위치: /XPLUS/xplus_agentmain 템플릿 파일 * [[xf5projecthome>template/screen/XPLUS/xplus_agentmain.xml|xplus_agentmain.xml]] * [[xf5projecthome>template/screen/XPLUS/xplus_agentmain.js|xplus_agentmain.js]] * [[xf5projecthome>template/template.html?xframe_screen_url=/XPLUS/xplus_agentmain|새창으로 실행]] ==== 화면 스크립트 ==== // 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); }