Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

크로니미움 변환 하기 #7

Closed
sculove opened this issue Apr 26, 2016 · 10 comments
Closed

크로니미움 변환 하기 #7

sculove opened this issue Apr 26, 2016 · 10 comments

Comments

@sculove
Copy link
Owner

sculove commented Apr 26, 2016

No description provided.

@zipu
Copy link

zipu commented Apr 28, 2016

pull request 날렸습니다..

근데 JavascriptConsoleMessage() 가 제대로 동작 안합니다.
warning이랑 Error message만 출력을 하는데요..
qt document를 보니 qt5.6부터 logging category를 사용한다는데 어떻게 사용해야 하는지 잘 모르겠네요..
"Since Qt 5.6, the default implementation logs the messages in a js logging category"
qt5.6 아래 버전에서는 확인 안해봤구요..

@sculove
Copy link
Owner Author

sculove commented Apr 28, 2016

@zipu #9 머지했습니다.
저도 확인해 볼께요. 다시 한번 감사합니다.

sculove added a commit that referenced this issue Apr 28, 2016
@zipu
Copy link

zipu commented May 3, 2016

index.html에서 Promise 리턴하는 method로 생성하는 부분을
qwebchannel.js 내의 addMethods 함수를 아래처럼 수정하는 것도 가능하네요.
method name을 파싱하지 않아도 되고, kiwoom object내에 중복되는 method가 생기지 않는다는 장점이 있을거 같습니다.

    function addMethod(methodData)
    {
        var methodName = methodData[0];
        var methodIdx = methodData[1];
        object[methodName] = function() {
            var args = [];
            var callback;
            for (var i = 0; i < arguments.length; ++i) {
                if (typeof arguments[i] === "function")
                    callback = arguments[i];
                else
                    args.push(arguments[i]);
            }

            return new Promise(function(resolve){
                webChannel.exec({
                    "type": QWebChannelMessageTypes.invokeMethod,
                    "object": object.__id__,
                    "method": methodIdx,
                    "args": args
                }, function(response) {
                    if (response !== undefined) {
                        var result = object.unwrapQObject(response);
                        resolve(result);
                    }
               });
            });
        }
    }

@sculove
Copy link
Owner Author

sculove commented May 4, 2016

@zipu qwebchannel.js를 바꾸는 것도 좋은 방법이네요.
하지만, 외부 라이브러리를 직접 고치는게 향후에 유지보수하기 힘들것 같아서요.

지금은 kiwoom object의 메소드를 원래 이름으로 재정의하는 것을 생각하고 있어요. 그동안 시간이 없어서 못했는데, 이번 주말에 할수 있을것 같네요. 머지되면 다시 피드백 주시면 좋겠어요. 항상 감사합니다.

@sculove
Copy link
Owner Author

sculove commented May 4, 2016

@zipu 헉 크롬 50으로 업그레이드 된 이후로, Object.observe가 삭제되서 리모트 디버깅이 안되네요. ㅠㅠ

sculove added a commit that referenced this issue May 5, 2016
@sculove sculove closed this as completed May 6, 2016
@sculove sculove reopened this May 9, 2016
@sculove
Copy link
Owner Author

sculove commented May 9, 2016

이벤트가 발생하는 시점과, commGetData 를 얻는 시점이 모두 비동기로 동작하여,
commGetData가 실제 실행되는 시점에는 데이터가 이미 없어진 상태임.
이로 인해 이벤트가 발생하는 시점에서 정확한 데이터를 얻지 못함 ㅠㅠ

@sculove
Copy link
Owner Author

sculove commented May 9, 2016

크로니움기반에서 python 에서 크로니움 기반을 동기로 바꾸는 방법을 찾거나, Webkit2로 롤백해야할 상황

@sculove
Copy link
Owner Author

sculove commented May 9, 2016

WebChannel은 전부 비동기. 동기를 사용할수 없음.
http://stackoverflow.com/questions/33536814/is-there-any-way-to-use-synchronous-function-call-through-qt-webchannel

현재 QWebview-plus 컨셉에 맞지 않음
적용불가

@sculove sculove closed this as completed May 9, 2016
@zipu
Copy link

zipu commented Jun 22, 2016

롤백 하신건 알고 있었는데 이런 이유가 있었는지는 몰랐네요. 저는 파이썬에서 이벤트 처리를 다 하고나서 javascript로 넘기는 방법을 사용하고 있어서 이런 문제가 있는지 전혀 몰랐네요.확실히 qwebview-plus 컨셉에는 맞지 않겠네요.

키움에서 해외선물옵션용 API를 배포한 후로 새로 repository를 만들어서 개발하고 있다보니, 방문이 뜸했습니다. 덕분에 정말 큰 도움이 되었습니다. 혼자 시작했으면 까마득한 일들을 하고 있네요.
다시한번 감사합니다. 좋은 결과 있으시길 바랍니다.

@sculove
Copy link
Owner Author

sculove commented Jun 23, 2016

@zipu 저도 요즘 바뻐서 ㅋㅋ 못하고 있답니다. 덕분에 저도 계속 진행할수 있네요 좋은하루되세요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants