This commit is contained in:
vet
2026-04-20 12:30:26 +07:00
parent f409121771
commit 8d3b8bdc23
3 changed files with 70 additions and 0 deletions

View File

@@ -259,6 +259,9 @@ _install_pc_nginx_proxy() {
local conf_src="${script_dir}/nginx/openim-pc-proxy.conf"
local conf_name="openim-pc-proxy.conf"
local proxy_domain="${PC_PROXY_DOMAIN:-cms-jack.imharry.work}"
local repo_root
repo_root="$(cd "${script_dir}/.." && pwd)"
local sdk_static_dir="/var/www/openim-pc-sdk"
if [[ -f "$ENV_FILE" ]]; then
# shellcheck source=/dev/null
@@ -271,6 +274,32 @@ _install_pc_nginx_proxy() {
return 1
fi
info " 准备 OpenIM WASM SDK 静态资源: ${sdk_static_dir}"
mkdir -p "$sdk_static_dir"
local sdk_lib_dir="${repo_root}/pc/node_modules/@openim/wasm-client-sdk/lib"
local sdk_assets_dir="${repo_root}/pc/node_modules/@openim/wasm-client-sdk/assets"
local pc_public_dir="${repo_root}/pc/public"
local asset src
for asset in worker.js worker-legacy.js; do
src="${sdk_lib_dir}/${asset}"
if [[ -s "$src" ]]; then
install -m 0644 "$src" "${sdk_static_dir}/${asset}"
success " 已安装 SDK worker: ${sdk_static_dir}/${asset}"
else
warn " 缺少 SDK worker: $src(请先执行 ./deploy-test/06-install-frontend.sh pc"
fi
done
for asset in openIM.wasm sql-wasm.wasm wasm_exec.js; do
src="${pc_public_dir}/${asset}"
[[ -s "$src" ]] || src="${sdk_assets_dir}/${asset}"
if [[ -s "$src" ]]; then
install -m 0644 "$src" "${sdk_static_dir}/${asset}"
success " 已安装 SDK 资源: ${sdk_static_dir}/${asset}"
else
warn " 缺少 SDK 资源: ${asset}(请先执行 ./deploy-test/06-install-frontend.sh pc && ./deploy-test/07-start-frontend.sh pc"
fi
done
if ! _has nginx; then
if _has apt-get; then
apt-get update -y

View File

@@ -314,6 +314,7 @@ TENCENT_SDK_SECRET_KEY=xxx
| `/api/im/` | `127.0.0.1:10002` |
| `/api/user/``/api/chat/` | `127.0.0.1:10008` |
| `/msg_gateway` | `127.0.0.1:10001`WebSocket |
| `/openIM.wasm``/sql-wasm.wasm``/wasm_exec.js``/node_modules/@openim/wasm-client-sdk/lib/worker*.js` | `/var/www/openim-pc-sdk`OpenIM WASM SDK 静态资源) |
| `/` | `127.0.0.1:5173`PC Vite dev server |
1. 服务器上已执行 `05-start.sh` 等,保证 `10001/10002/10008` 在监听。
@@ -325,6 +326,8 @@ TENCENT_SDK_SECRET_KEY=xxx
**域名访问**:本配置中 `openim-pc-proxy` 使用 `server_name cms-jack.imharry.work`,只监听本机 `80`;推荐外部 `GET /``https://cms-jack.imharry.work/`,由外层 HTTPS 入口转发到本机 `80` 后代理 PC Vite。`00-init-tools.sh nginx` 会禁用 `sites-enabled/default`,并尝试去掉 `sites-available/default` 里的 `default_server`,避免默认站点抢占 `:80`。若机上还有其它站点也写了 `default_server``nginx -t` 会报错,需在该站点配置中删除 `default_server`(保留 `listen 80;` 即可)。
**PC WASM SDK 资源**`00-init-tools.sh nginx` 会把 `pc/node_modules/@openim/wasm-client-sdk/lib/worker.js``worker-legacy.js` 以及 `openIM.wasm``sql-wasm.wasm``wasm_exec.js` 复制到 `/var/www/openim-pc-sdk`,并由 Nginx 直接返回这些文件。这样可以绕开 PC Vite dev server 里用于规避 MIME 报错的 `worker.js` placeholder避免浏览器端 OpenIM SDK 卡在 worker 初始化阶段,导致不发起 `/api/im``/msg_gateway` 请求。更新 `pc` 依赖或 SDK 后,请重新执行 `sudo ./deploy-test/00-init-tools.sh nginx` 同步静态资源。
### Docker 基础设施
| 服务 | 端口 |

View File

@@ -110,6 +110,44 @@ server {
return 200 "ok\n";
}
# OpenIM WASM SDK 关键资源。
# Vite dev server 中有 worker.js placeholder 中间件,会导致 SDK worker 启动失败;
# 这里直接由 Nginx 从稳定目录提供真实文件,绕过 Vite。
location = /openIM.wasm {
alias /var/www/openim-pc-sdk/openIM.wasm;
default_type application/wasm;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
}
location = /sql-wasm.wasm {
alias /var/www/openim-pc-sdk/sql-wasm.wasm;
default_type application/wasm;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
}
location = /wasm_exec.js {
alias /var/www/openim-pc-sdk/wasm_exec.js;
default_type application/javascript;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
}
location = /node_modules/@openim/wasm-client-sdk/lib/worker.js {
alias /var/www/openim-pc-sdk/worker.js;
default_type application/javascript;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
}
location = /node_modules/@openim/wasm-client-sdk/lib/worker-legacy.js {
alias /var/www/openim-pc-sdk/worker-legacy.js;
default_type application/javascript;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
}
# PC Vite dev server.
location / {
proxy_pass http://127.0.0.1:5173;