| #!/usr/bin/env python3 | |
| """ | |
| Runs a COOE/COEP local webserver for testing emscripten deployment. | |
| Note: | |
| Browsers that have implemented and enabled SharedArrayBuffer are gating it behind Cross Origin Opener Policy (COOP) | |
| and Cross Origin Embedder Policy (COEP) headers. | |
| Pthreads code will not work in deployed environment unless these headers are correctly set. | |
| see: https://emscripten.org/docs/porting/pthreads.html | |
| """ | |
| from http.server import HTTPServer, SimpleHTTPRequestHandler | |
| class RequestHandler(SimpleHTTPRequestHandler): | |
| def end_headers(self): | |
| self.send_header("Access-Control-Allow-Origin", "*") | |
| self.send_header("Cross-Origin-Embedder-Policy", "require-corp") | |
| self.send_header("Cross-Origin-Opener-Policy", "same-origin") | |
| super().end_headers() | |
| def main(): | |
| addr = "127.0.0.1" | |
| port = 8080 | |
| httpd = HTTPServer((addr, port), RequestHandler) | |
| print("Serving http at http://{}:{}".format(addr, port)) | |
| try: | |
| httpd.serve_forever() | |
| except KeyboardInterrupt: | |
| print("\nBye.") | |
| if __name__ == "__main__": | |
| main() |