워커 » Api

postmessage

Description

start API를 통해서 생성한 워커 쓰레드에게 문자열 데이터를 전송한다.

Parameters

Parameters Type Description
strData STRING 전송할 문자열

Return Value

Type Description
BOOL 정상처리 여부

Remark

일반 문자열이 아닌, 오브젝트 데이터를 송신하기 위해서는 factory.jsonstringify API를 이용하여 JSON 오브젝트를 문자열로 변환하여 송신해야 한다.

Example

function btnSend_on_mouseup(objInst) { var ret; ret = this.worker01.postmessage("테스트 메세지"); if (ret == false) { screen.alert("워커 컴포넌트 postmessage fail"); } } function btnSendJSON_on_mouseup(objInst) { var ret, obj_send_data; obj_send_data = { data: "테스트 메세지" }; // 일반 문자열이 아닌, 오브젝트 데이터를 송신하기 위해서는 // factory.jsonstringify API를 이용하여 // JSON 오브젝트를 문자열로 변환하여 송신해야 한다. ret = this.worker01.postmessage(factory.jsonstringify(obj_send_data)); if (ret == false) { screen.alert("워커 컴포넌트 postmessage fail"); } } /** * 워커 컴포넌트의 start 함수를 통해서 실행된 워커 쓰레드가 * 실행하는 스크립트내에서 postMessage API가 호출된 경우에 이벤트가 발생한다. * @param objInst 워커 컴포넌트 인스턴스 * @param strMessage 워커 쓰레드가 송신한 데이터 문자열 */ function wk_on_message(objInst, strMessage) { // 일반 문자열이 아닌, 오브젝트 데이터 수신시에는 // factory.jsonparse API를 이용하여 // 문자열을 JSON 오브젝트로 변환하여 사용한다. this.fldRecvData.settext(strMessage); } ////////////////////////////////////////////////////////////////////////// // 아래 소스는 워커 컴포넌트 start API를 통해서 전달된 // 화면 경로에 지정된 스크립트 파일 내용임 ////////////////////////////////////////////////////////////////////////// /** * 워커 컴포넌트를 통해서 실행되는 워커 쓰레드의 데이터 수신 이벤트 처리 함수 * 워커 컴포넌트의 postmessage API를 통해서 이벤트가 발생함 * * Worker 쓰레드 기능 * https://developer.mozilla.org/en-US/docs/Web/API/Worker * * Worker 쓰레드에서 호출가능한 기능/함수 * https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/ * Functions_and_classes_available_to_workers * * Worker 쓰레드 스크립트에서는 window, factory, jQuery 라이브러리 사용이 불가하다. * * HTTP 통신을 위해서는 fetch API를 사용한다. * https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API */ onmessage = function(event) { var recv_data, send_data; // 로그는 console.log API를 통해서만 가능하며(factory.consoleprint 사용 불가), // 로그 내용은 브라우저 개발자 콘솔에 표시됨 console.log("WorkerThread> start"); // this는 DedicatedWorkerGlobalScope 오브젝트 인스턴스 console.log(this); // 워커 컴포넌트의 postmessage API를 통해서 전달된 데이터는 event.data에 전달됨 recv_data = event.data; console.log("WorkerThread> Recv Data = [" + recv_data + "]"); // 오브젝트 형태의 수신 데이터를 처리하기 위해서는 // JSON.parse API를 사용하여 수신한 문자열을 오브젝트로 변환하여 사용한다. // recv_data = JSON.parse(event.data); // 디버거 키워드 사용 가능 // debugger; // 스크립트내 정의된 함수를 호출하여 수신한 데이터를 처리 send_data = WorkerDataFunc(recv_data); // 워커 컴포넌트의 on_message 이벤트로 데이터 전달 // 오브젝트 데이터를 전달하기 위해서는 JSON.stringify API를 통해서 // 문자열로 변환하여 전달해야 한다. // send_data = JSON.stringify(send_data); console.log("WorkerThread> Send Data = [" + send_data + "]"); postMessage(send_data); }; function WorkerDataFunc(data) { console.log("WorkerDataFunc> start"); return data.toUpperCase(); }

Viewer Ver.

24.9.3.1

Update Date

20240903