mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-19 08:36:37 +00:00
This commit adds a fix to the server.py file to handle requests for web worker files when running the local python server to test the wasm examples. The motivation for this is that currently the server is serving files from the build-em/bin directory which is where the .worker.js files exist. But when examples access these resources they do so with the application context path, for example /whisper.wasm/libmain.worker.js but this will not be found as it currently works.
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import http.server
|
|
import socketserver
|
|
import os
|
|
from pathlib import Path
|
|
|
|
SCRIPT_DIR = Path(__file__).parent.absolute()
|
|
DIRECTORY = os.path.join(SCRIPT_DIR, "../build-em/bin")
|
|
DIRECTORY = os.path.abspath(DIRECTORY)
|
|
|
|
class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, directory=DIRECTORY, **kwargs)
|
|
|
|
def do_GET(self):
|
|
# If requesting a worker file from any subdirectory
|
|
if '.worker.js' in self.path:
|
|
worker_file = os.path.basename(self.path)
|
|
worker_path = os.path.join(DIRECTORY, worker_file)
|
|
|
|
if os.path.exists(worker_path):
|
|
self.path = '/' + worker_file
|
|
|
|
return super().do_GET()
|
|
|
|
def end_headers(self):
|
|
# Add required headers for SharedArrayBuffer
|
|
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
|
|
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
|
|
self.send_header("Access-Control-Allow-Origin", "*");
|
|
super().end_headers()
|
|
|
|
PORT = 8000
|
|
|
|
with socketserver.TCPServer(("", PORT), CustomHTTPRequestHandler) as httpd:
|
|
print(f"Serving directory '{DIRECTORY}' at http://localhost:{PORT}")
|
|
try:
|
|
httpd.serve_forever()
|
|
except KeyboardInterrupt:
|
|
print("\nServer stopped.")
|