- 基于 openim-electron-demo 改造:工号+密码登录(自研账号服务)、会话列表/聊天窗/通讯录界面重做
- 文字/语音/文件/图片消息、文件拖拽发送、表情面板、一对一语音通话(LiveKit)
- RTC 令牌对接账号服务带鉴权版 /api/rtc_token(Bearer imToken + {room,identity})
- account-service: CORS Allow-Headers 补 authorization(浏览器/渲染进程跨域调 rtc_token 需要)
- 附本地 mock 账号服务(scripts/mock-account-server.js)与截图联调脚本
49 lines
2.5 KiB
Markdown
49 lines
2.5 KiB
Markdown
# 畅联 PC 端(pc-client)
|
||
|
||
公司内部通讯工具「畅联」的 PC 客户端,基于 OpenIM 官方 Electron 样板(openim-electron-demo,Electron + React 18 + TypeScript + antd 5 + zustand)改造:
|
||
|
||
- 登录改为**工号 + 密码**,走自研账号服务(不部署 OpenIM 官方 chat 业务服务 :10008)
|
||
- 用户信息、音视频通话令牌等原走 chat 服务的调用,已全部改道 OpenIM SDK 或自研账号服务
|
||
- 界面文案全中文,默认语言简体中文
|
||
|
||
## 依赖的服务端
|
||
|
||
见仓库根目录 `README.md`:OpenIM 服务端(REST :10002 / WS :10001)、自研账号服务(:10010,接口见 `account-service/README.md`)、LiveKit(:17880)。客户端连接地址在 `.env` 里配置(`VITE_ACCOUNT_URL`、`VITE_WS_URL`、`VITE_API_URL` 等)。
|
||
|
||
## 本地开发
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
- `npm install` 时注意:本仓库用 allow-scripts 白名单管理依赖安装脚本,需批准 `electron` / `esbuild` / `koffi` 等包的 postinstall(package.json 里已配好 `allowScripts` 字段)。
|
||
- `npm run dev` 启动 Vite 开发服务器(默认同时拉起 Electron 窗口)。
|
||
|
||
### 本地 mock 登录服务(联调用)
|
||
|
||
真实员工账号由管理员在服务器上开通。本地开发没有真实账号时,可以起一个 mock 账号服务:
|
||
|
||
```bash
|
||
npm run mock:account
|
||
```
|
||
|
||
然后新建 `.env.local`(已被 gitignore)写入 `VITE_ACCOUNT_URL=http://127.0.0.1:11010` 覆盖 `.env` 里的真实地址,用 `test001 / test123`(或 `test002 / test123`)登录。mock 服务实现了与真实账号服务相同的 `/api/login` 和 `/api/rtc_token` 接口(登录时会真实调用 OpenIM 管理接口换取 imToken;`/api/rtc_token` 同样要求 `Authorization: Bearer <imToken>`)。
|
||
|
||
> ⚠️ mock 服务内置测试环境默认密钥,仅供本地开发,禁止打包、禁止用于正式环境。
|
||
|
||
## 打包
|
||
|
||
先 `npm run build`(vite build,产物在 `dist/`),再用 electron-builder 打包安装包。打包用的脚本在 `package_electron.json` 里(打包前按原样板说明用它替换 `package.json`):
|
||
|
||
```bash
|
||
npm run build:win # Windows 安装包
|
||
```
|
||
|
||
如果只想验证构建不产出安装包:`npm run build && npx electron-builder`(此命令未验证,以 `package_electron.json` 里的脚本为准)。
|
||
|
||
## 其他
|
||
|
||
- 本项目基于 openim-electron-demo(AGPL-3.0 附加条款),仅作公司内部使用。
|
||
- 原样板说明(英文、功能清单等)见上游仓库 <https://github.com/openimsdk/openim-electron-demo>。
|