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

Fix communication between kemuides. #6

Open
hikalium opened this issue Nov 9, 2016 · 2 comments
Open

Fix communication between kemuides. #6

hikalium opened this issue Nov 9, 2016 · 2 comments
Labels

Comments

@hikalium
Copy link
Member

hikalium commented Nov 9, 2016

Sometimes communication with two kue-chips is failed. we need to find a cause and fix it.

@ghost
Copy link

ghost commented Oct 27, 2019

接続が切れることがあったので調べたところ、
複数のタブで同時にエミューレーションを実行しているとき、
タブがバックグラウンドになるとsetTimeout(..., 600)(core.html の517行付近) の実行間隔が(特にFirefoxで)2000ms近くまで落ち、
その結果core.htmlの440行付近の以下のコードでキーが削除されていました。

1800を6000程度にすると起こらなくなりました。

// ※ nameは接続先の名前
if (+new Date() - JSON.parse(localStorage.getItem("KEMU-" + name)).timestamp > 1800) {
    localStorage.removeItem("KEMU-" + name);
    i--;
    continue;
}



検証に使ったコードとそのスクリーンショット

// 517行付近
connectTimer = setTimeout(function connectTimerFunction(){
    var val = localStorage.getItem("KEMU-" + kemuName);
    if (val) {
        var obj = JSON.parse(val);
        // obj.timestamp = +new.Date() を以下の3行に置換
        const now = +new Date();
        console.log("INTERVAL: ", now - obj.timestamp)
        obj.timestamp = now;
        localStorage.setItem("KEMU-" + kemuName, JSON.stringify(obj));
    }
    updateCoreList();
    connectedTimer = setTimeout(connectTimerFunction, 600);
}, 600);

Screenshot from 2019-10-27 14-10-29

@yasuo-ozu
Copy link
Member

接続切れを探知する処理のタイムアウトが短いという問題ですね。
片方の処理系をバックグラウンドで表示した場合の問題と思われますが、Chromeにおいてもバックグラウンドタブの動作は異様に遅く、そもそもIBUFを通じてデータを受信する処理がまともに動作しない、という状況が起こることがあります。
そのため、フォアグラウンドで実行することを強く推奨します。

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

No branches or pull requests

2 participants