ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 Node 搭建静态资源服务器:TEngine 热更新测试利器 FileServer 完全指南

使用 Node 搭建静态资源服务器:TEngine 热更新测试利器 FileServer 完全指南 游戏开发【免费下载链接】TEngineUnity 商用级别开发框架原生内置 AI 工作流支持集成 HybridCLR 高性能热更、Obfuz 代码混淆加固、YooAssets 企业级资源管理方案构建高效、安全、可扩展的工业化开发底座。项目地址https://gitcode.com/gh_mirrors/teng/TEngine点击查看免费下载在 TEngine 的 资源模块 中基于 YooAsset 的热更新链路需要一台可存放“在线参数”与 AssetBundle 文件的远程服务器用于联机测试仓库在Tools/FileServer目录下内置了一个基于 Node.js 的静态资源服务器yumu-static-server正是为此场景而准备的。本文将基于 Tools/FileServer/README.md 完整讲解该服务器的安装、全部命令行参数与内置功能并结合 index.js、src/static-server.js 等源码逐层剖析其实现原理读完你即可在任意目录一键起服并把它接入 TEngine 的 HostPlayMode 热更新测试。前置要求本工具依赖 Node.js 与 npm 环境依赖项见 package.json包括chalk、handlebars、mime、open、pem、yargs等下方命令请在已安装 Node 的机器上执行。安装全局安装 yumu-static-servernpm install yumu-static-server -g该包通过 package.json 中的bin字段将可执行命令注册为serverbin: { server: index.js }因此安装完成后server命令即可在全局任意目录直接调用。index.js 作为命令入口以#!/usr/bin/env node声明运行环境并转发到实际的bin/app.js实现。仓库同样提供了 Windows 与 macOS/Linux 的一键安装脚本Windowsinstal.bat内容为npm install yumu-static-server -gmacOS/Linuxinstal.sh内容为npm install yumu-static-server -g使用命令行参数全解server会在当前工作目录下启动静态资源服务器默认端口为 8080。所有参数均来自 README 的官方说明server # 会在当前目录下启动一个静态资源服务器默认端口为8080 server -p[port] 3000 # 会在当前目录下启动一个静态资源服务器端口为3000 server -i[index] index.html # 设置文件夹在默认加载的文件 server -c[charset] UTF-8 # 设置文件默认加载的字符编码 server -cors # 开启文件跨域 server -h[https] # 开启https服务 server --openindex # 是否打开默认页面 server --no-openbrowser # 关闭自动打开浏览器参数速查表参数作用默认行为-p[port]指定监听端口8080-i[index]指定访问文件夹时默认加载的文件如index.html无-c[charset]设置文本类响应附加的字符编码无-cors开启跨域响应头Access-Control-Allow-Origin: *关闭-h[https]开启 HTTPS 服务HTTP--openindex访问目录时是否自动加载默认页面关闭--no-openbrowser关闭启动后自动打开浏览器默认自动打开启动成功后终端会打印本机所有 IPv4 网卡可访问地址源码见 src/static-server.js 的logUsingPort例如Starting up your server Available on: http://192.168.1.100:8080 http://127.0.0.1:8080 --------------------------------------------------端口被占用时自动顺延值得注意的一个细节源码中的startServer监听了error事件当捕获到EADDRINUSE端口已被占用时会自动将端口号加 1 后重新监听并在成功启动时打印提示The port X is being used, change to port Y。因此你不必担心端口冲突服务器会智能顺延。基本功能README 明确列出的能力如下每一项都能在源码中找到对应实现启动静态资源服务器端口可配置-p源码对应this.port字符编码可配置-c源码对应this.charset作用于Content-Type头文件夹下默认加载文件可配置-i源码对应this.indexPage是否跨域可配置-cors源码对应this.cors开启后每个响应都附加Access-Control-Allow-Origin: *开启 https 服务-h源码对应this.protocal options.https ? https : http源码原理路由、压缩与响应本小节的内容由源码实现推断而来可用于深入理解工具行为。路由处理routeHandler核心入口是routeHandlersrc/static-server.js其流程为拼接真实路径path.join(process.cwd(), path.normalize(decodeURI(req.url)))即以启动时所在目录为根若路径末尾带/且为目录进入respondDirectory展示目录列表若是目录但末尾无/返回 301 重定向补上/若是文件进入respond直接读取文件流若路径不存在返回 404 页面respondNotFound。目录列表与默认页respondDirectory访问目录时若openIndexPage为真且目录下存在indexPage默认index.html指定的文件则直接响应该文件否则调用fs.readdir枚举目录内容通过 Handlebars 模板src/templates/default.js渲染出带“目录/文件”标记的列表页并对目录排序目录在前、文件在后。模板引擎为 handlebars对应 README TODO 中的“引入 handlebars 编译模板”已完成项。MIME 类型与字符编码mime.jssrc/mime.js 提供了三件事.br/.gz压缩扩展名识别遇到此类文件先剥掉压缩后缀再推断类型WebGL 相关 MIME 兜底.wasm返回application/wasm.js返回application/javascript.data返回application/octet-stream—— 这与 TEngine WebGL 平台WebPlayMode Remote 加载直接相关是 WebGL 构建产物得以正确下载的关键字符编码附加仅当Content-Type匹配text/*或application/javascript|json|xml时才拼接; charset...对应-c参数。Gzip 动态压缩compressHandler对.css、.js、.html后缀的文件服务器会根据请求头Accept-Encoding自动判断支持 gzip 则通过zlib.createGzip()压缩后返回并设置Content-Encoding: gzipshouldCompresscompressHandler正则^\\.(css|js|html)$。其余类型直接以文件流pipe输出并附带Accept-Ranges: bytes头。HTTPS 服务-h开启-h后源码调用pem.createCertificate({ days: 1, selfSigned: true })动态生成一张有效期 1 天的自签名证书再以https.createServer启动并打印友好提示Currently is using HTTPS certificate (Manually trust it if necessary)—— 首次访问时浏览器会提示需要手动信任该证书。404 页面当请求路径不存在时返回 src/templates/404.js 渲染的 404 页面配套图片位于 src/templates/images/404.png。在 TEngine 热更新测试中的落地用法一键启动脚本仓库已内置两套一键脚本默认以8081 端口 开启跨域的方式启动对应 README 之外的工程化封装Windowsstart.batmacOS/Linuxstart.sh其中 Linux 脚本内容为server -p 8081 -cors即使用上文参数组合指定端口 8081 并开启跨域。对接资源模块依据 Books/3-1-资源模块.md 的说明在Tools/FileServer目录下有一个基于 Node 的静态文件服务器可以把在线参数以及 AB 放入用于做热更新测试。具体落地步骤在Tools/FileServer目录下启动服务器或直接cd到存放构建产物的目录后启动将 YooAsset 构建出的 AssetBundle 产物与在线参数文件放入服务器根目录在 Unity 菜单TEngineSetting中将资源服务器地址HostServerURL配置为http://本机IP:8081并按需配置备用服务器地址FallbackHostServerURL将资源模块运行模式切换为HostPlayMode联机运行模式支持热更新即可在真机/编辑器中进行热更新联调跨平台包括 WebGL 的 Remote 加载方式均可复用此服务器。提示README 中-cors参数对于浏览器端WebGL/小游戏直接拉取 AB 资源尤为重要而-h的 HTTPS 能力则可在需要安全传输的场景如 WebGL 正式环境下使用。TODO 清单与现状README 末尾列出的 TODO 均为已完成状态引入 handlerbars 编译模板 —— 对应 src/templates/index.js 中对default.js/404.js两个模板的加载与导出支持文件是否跨域 —— 对应responseFile中的Access-Control-Allow-Origin: *支持 https 服务 —— 对应pem自签名证书 https.createServer。总结Tools/FileServer是一个轻量、零配置依赖全局命令的 Node 静态资源服务器它提供可配置的端口、字符编码、默认首页、跨域开关与 HTTPS 能力并在源码层实现了目录列表渲染、MIME 智能识别、gzip 动态压缩、端口自动顺延与 404 兜底。在 TEngine 项目中它扮演着“热更新联调基础设施”的角色 —— 把在线参数与 AB 产物放进服务器根目录配合资源模块的 HostPlayMode 与TEngineSetting中的服务器地址配置即可快速搭建一条完整的联机热更新测试链路。赞分享游戏开发【免费下载链接】TEngineUnity 商用级别开发框架原生内置 AI 工作流支持集成 HybridCLR 高性能热更、Obfuz 代码混淆加固、YooAssets 企业级资源管理方案构建高效、安全、可扩展的工业化开发底座。项目地址https://gitcode.com/gh_mirrors/teng/TEngine点击查看免费下载相关推荐h3 静态资源服务实战用 serveStatic 搭建高性能静态文件服务器h3 静态资源服务实战用 serveStatic 搭建高性能静态文件服务器 本文基于 h3 仓库中 serve static assets 示例文档 http后端Web框架终极指南如何使用 node-static 快速搭建高性能静态文件服务器终极指南如何使用 node static 快速搭建高性能静态文件服务器 node static 是一个简单、符合 RFC 2616 标准的 HTTP 静态文件终极指南如何使用Zig构建高效响应式应用的事件驱动编程终极指南如何使用Zig构建高效响应式应用的事件驱动编程 Zig编程语言及其工具链为开发者提供了构建健壮、高效且可重用软件的强大能力尤其在事件驱动编程领域展现编程语言编译器语言运行时标准库上一篇使用 nixos-rebuild build-image 从 NixOS 配置构建云平台与虚拟化镜像下一篇EMQX e5.0.2 版本深度解析数据桥接增强、集群稳定性修复与 API 行为全面升级创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表