game/server.mjs

32 lines
1.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 本地静态文件服务器(可选工具):node server.mjs [端口]
* 双击 index.html 即可游玩,无需本服务器;仅当浏览器安全策略限制 file:// 页面时使用。
*/
import { createServer } from 'node:http';
import { readFile } from 'node:fs/promises';
import { extname, join, resolve } from 'node:path';
const root = resolve(process.argv[2] ? '.' : '.');
const port = Number(process.argv[2]) || 8765;
const MIME = {
'.html': 'text/html; charset=utf-8',
'.js': 'text/javascript; charset=utf-8',
'.css': 'text/css; charset=utf-8',
};
createServer(async (req, res) => {
try {
const pathname = decodeURIComponent(new URL(req.url, 'http://localhost').pathname);
const file = join(root, pathname.endsWith('/') ? join(pathname, 'index.html') : pathname);
const data = await readFile(file);
res.writeHead(200, { 'content-type': MIME[extname(file)] || 'application/octet-stream' });
res.end(data);
} catch {
res.writeHead(404);
res.end('not found');
}
}).listen(port, '127.0.0.1', () => {
console.log(`serving http://127.0.0.1:${port}/`);
});