forked from Kolyah35/minecraft-pe-0.6.1
Simple http server web
This commit is contained in:
@@ -339,7 +339,11 @@ if(${PLATFORM} MATCHES "Web")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EM_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EM_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EM_FLAGS} --preload-file ${CMAKE_SOURCE_DIR}/data@/data")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EM_FLAGS} --preload-file \"${CMAKE_SOURCE_DIR}/data@/data\"")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES RULE_LAUNCH_LINK "set EMCC_WASM_OPT=0 &&")
|
||||
# Remove -g (DWARF) to prevent wasm-opt post-link optimizations from running
|
||||
string(REPLACE "-g" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "-g" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
|
||||
target_compile_options(${PROJECT_NAME} PUBLIC
|
||||
"-Os"
|
||||
@@ -355,7 +359,7 @@ if(${PLATFORM} MATCHES "Web")
|
||||
"-sFORCE_FILESYSTEM=1"
|
||||
"-sLEGACY_GL_EMULATION=1"
|
||||
"-sGL_UNSAFE_OPTS=0"
|
||||
"-sEMULATE_FUNCTION_POINTER_CASTS=1"
|
||||
"-sEMULATE_FUNCTION_POINTER_CASTS=0"
|
||||
"-sALLOW_TABLE_GROWTH=1"
|
||||
"-sEXPORTED_RUNTIME_METHODS=['FS','stringToUTF8','UTF8ToString','cwrap','ccall','HEAP8','HEAPU8','HEAP32','HEAPU32']"
|
||||
"-sEXPORTED_FUNCTIONS=['_main']"
|
||||
@@ -404,6 +408,7 @@ else()
|
||||
TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/misc/web/index.html" $<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/misc/web/coi-serviceworker.js" $<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ cmake --build .
|
||||
2. Configure and build project:
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake .. -B . -G Ninja "-DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
|
||||
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="$env:EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
|
||||
cmake --build . --target MinecraftPE
|
||||
```
|
||||
> [!Note]
|
||||
|
||||
57
misc/web/coi-serviceworker.js
Normal file
57
misc/web/coi-serviceworker.js
Normal file
@@ -0,0 +1,57 @@
|
||||
/* coi-serviceworker.js */
|
||||
|
||||
if (typeof window === "undefined") {
|
||||
// Código del Worker: Intercepta peticiones
|
||||
self.addEventListener("install", () => self.skipWaiting());
|
||||
|
||||
self.addEventListener("activate", (event) =>
|
||||
event.waitUntil(self.clients.claim())
|
||||
);
|
||||
|
||||
self.addEventListener("fetch", (event) => {
|
||||
if (event.request.method !== "GET") return;
|
||||
|
||||
event.respondWith(
|
||||
fetch(event.request)
|
||||
.then((response) => {
|
||||
if (response.status === 0) return response;
|
||||
|
||||
const newHeaders = new Headers(response.headers);
|
||||
newHeaders.set("Cross-Origin-Embedder-Policy", "require-corp");
|
||||
newHeaders.set("Cross-Origin-Opener-Policy", "same-origin");
|
||||
newHeaders.set("Cross-Origin-Resource-Policy", "cross-origin");
|
||||
|
||||
return new Response(response.body, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: newHeaders,
|
||||
});
|
||||
})
|
||||
.catch(() => fetch(event.request))
|
||||
);
|
||||
});
|
||||
} else {
|
||||
// Código de la Ventana: Registra el worker y recarga
|
||||
(function () {
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker
|
||||
.register(window.document.currentScript.src)
|
||||
.then((registration) => {
|
||||
registration.addEventListener("updatefound", () => {
|
||||
// Si hay una actualización, recargamos
|
||||
location.reload();
|
||||
});
|
||||
|
||||
if (registration.active && !navigator.serviceWorker.controller) {
|
||||
// Si el worker está activo pero no controla la página aún, recargamos
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Si ya estamos aislados, perfecto
|
||||
if (window.crossOriginIsolated) {
|
||||
console.log("Aislamiento de origen ACTIVADO");
|
||||
}
|
||||
})();
|
||||
}
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
<canvas id="canvas"></canvas>
|
||||
|
||||
<script src="coi-serviceworker.js"></script>
|
||||
|
||||
<script>
|
||||
var Module = {
|
||||
canvas: document.getElementById('canvas'),
|
||||
|
||||
Reference in New Issue
Block a user