Merge pull request #930 from nonameShijian/PR-Branch
更新http协议完成后延迟重启,初次加载serviceWorker重启,使用xhr获取数据时加入状态码判断
This commit is contained in:
commit
a97069f092
|
@ -62,7 +62,9 @@ boot().then(() => {
|
||||||
const thisWindow = remote.getCurrentWindow();
|
const thisWindow = remote.getCurrentWindow();
|
||||||
thisWindow.loadURL(url);
|
thisWindow.loadURL(url);
|
||||||
} else {
|
} else {
|
||||||
location.href = url;
|
setTimeout(() => {
|
||||||
|
location.href = url;
|
||||||
|
}, 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
30
game/game.js
30
game/game.js
|
@ -136,17 +136,27 @@ new Promise(resolve => {
|
||||||
}
|
}
|
||||||
if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) {
|
if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) {
|
||||||
let scope = window.location.protocol + '//' + window.location.host + '/';
|
let scope = window.location.protocol + '//' + window.location.host + '/';
|
||||||
navigator.serviceWorker.register(`${scope}service-worker.js`, {
|
navigator.serviceWorker.getRegistrations().then(registrations => {
|
||||||
updateViaCache: "all",
|
let findServiceWorker = false;
|
||||||
scope,
|
for (let registration of registrations) {
|
||||||
}).then(registration => {
|
if (registration && registration.active && registration.active.scriptURL == `${scope}service-worker.js`) {
|
||||||
navigator.serviceWorker.addEventListener('message', e => {
|
findServiceWorker = true;
|
||||||
console.log(e);
|
}
|
||||||
|
}
|
||||||
|
navigator.serviceWorker.register(`${scope}service-worker.js`, {
|
||||||
|
updateViaCache: "all",
|
||||||
|
scope,
|
||||||
|
}).then(registration => {
|
||||||
|
// 初次加载worker,需要重新启动一次
|
||||||
|
if (!findServiceWorker) location.reload();
|
||||||
|
navigator.serviceWorker.addEventListener('message', e => {
|
||||||
|
console.log(e);
|
||||||
|
});
|
||||||
|
registration.update();
|
||||||
|
// console.log(`set scope: ${scope}, service worker instance:`, registration);
|
||||||
|
}).catch(e => {
|
||||||
|
console.log('serviceWorker加载失败: ', e);
|
||||||
});
|
});
|
||||||
registration.update();
|
|
||||||
// console.log(`set scope: ${scope}, service worker instance:`, registration);
|
|
||||||
}).catch(e => {
|
|
||||||
console.log('serviceWorker加载失败: ', e);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const script = document.createElement('script')
|
const script = document.createElement('script')
|
||||||
|
|
|
@ -263,6 +263,11 @@ export class LibInit extends Uninstantable {
|
||||||
const xmlHttpRequest = new XMLHttpRequest();
|
const xmlHttpRequest = new XMLHttpRequest();
|
||||||
let data;
|
let data;
|
||||||
xmlHttpRequest.addEventListener("load", () => {
|
xmlHttpRequest.addEventListener("load", () => {
|
||||||
|
if (![0, 200].includes(xmlHttpRequest.status)) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (typeof onError == 'function') onError(new Error(oReq.statusText || oReq.status));
|
||||||
|
return;
|
||||||
|
}
|
||||||
data = xmlHttpRequest.responseText;
|
data = xmlHttpRequest.responseText;
|
||||||
if (!data) {
|
if (!data) {
|
||||||
if (typeof onError == 'function') onError(new Error(`${scriptSource}加载失败!`));
|
if (typeof onError == 'function') onError(new Error(`${scriptSource}加载失败!`));
|
||||||
|
@ -303,7 +308,14 @@ export class LibInit extends Uninstantable {
|
||||||
sScriptURL = url + str;
|
sScriptURL = url + str;
|
||||||
}
|
}
|
||||||
const oReq = new XMLHttpRequest();
|
const oReq = new XMLHttpRequest();
|
||||||
if (typeof onload == 'function') oReq.addEventListener("load", onload);
|
if (typeof onload == 'function') oReq.addEventListener("load", result => {
|
||||||
|
if (![0, 200].includes(oReq.status)) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
onload(result);
|
||||||
|
});
|
||||||
if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
|
if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
|
||||||
oReq.open("GET", sScriptURL);
|
oReq.open("GET", sScriptURL);
|
||||||
oReq.send();
|
oReq.send();
|
||||||
|
@ -330,7 +342,14 @@ export class LibInit extends Uninstantable {
|
||||||
sScriptURL = url + str;
|
sScriptURL = url + str;
|
||||||
}
|
}
|
||||||
const oReq = new XMLHttpRequest();
|
const oReq = new XMLHttpRequest();
|
||||||
if (typeof onload == 'function') oReq.addEventListener("load", onload);
|
if (typeof onload == 'function') oReq.addEventListener("load", result => {
|
||||||
|
if (![0, 200].includes(oReq.status)) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
onload(result);
|
||||||
|
});
|
||||||
if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
|
if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
|
||||||
oReq.open("GET", sScriptURL, false);
|
oReq.open("GET", sScriptURL, false);
|
||||||
oReq.send();
|
oReq.send();
|
||||||
|
@ -340,6 +359,11 @@ export class LibInit extends Uninstantable {
|
||||||
static json(url, onload, onerror) {
|
static json(url, onload, onerror) {
|
||||||
const oReq = new XMLHttpRequest();
|
const oReq = new XMLHttpRequest();
|
||||||
if (typeof onload == 'function') oReq.addEventListener("load", () => {
|
if (typeof onload == 'function') oReq.addEventListener("load", () => {
|
||||||
|
if (![0, 200].includes(oReq.status)) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
|
||||||
|
return;
|
||||||
|
}
|
||||||
let result;
|
let result;
|
||||||
try {
|
try {
|
||||||
result = JSON.parse(oReq.responseText);
|
result = JSON.parse(oReq.responseText);
|
||||||
|
@ -368,6 +392,11 @@ export class LibInit extends Uninstantable {
|
||||||
}
|
}
|
||||||
const oReq = new XMLHttpRequest();
|
const oReq = new XMLHttpRequest();
|
||||||
if (typeof onload == 'function') oReq.addEventListener("load", () => {
|
if (typeof onload == 'function') oReq.addEventListener("load", () => {
|
||||||
|
if (![0, 200].includes(oReq.status)) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
|
||||||
|
return;
|
||||||
|
}
|
||||||
let result;
|
let result;
|
||||||
try {
|
try {
|
||||||
result = JSON.parse(oReq.responseText);
|
result = JSON.parse(oReq.responseText);
|
||||||
|
|
Loading…
Reference in New Issue