diff --git a/README.md b/README.md index 68fbed1..4d526cf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,15 @@ # v-chat 微信多客户端方案。服务器通过Web版微信接口提供收发微信消息的能力,并允许多个客户端同时连接。 +## 使用 +### 服务端 +`cd packages/server` +`node ./ -c CONFIG_FILE` + +### 客户端 +`cd packages/web` +参考`.env.example`文件,编辑`.env`文件配置环境变量,然后编译:`npm run build`。 + ## 鸣谢 前端程序参考自[fiora](https://github.com/yinxin630/fiora)web聊天室。 服务端程序使用了[wechat4u](https://github.com/nodeWechat/wechat4u)。 diff --git a/packages/web/.env.example b/packages/web/.env.example new file mode 100644 index 0000000..31e87ca --- /dev/null +++ b/packages/web/.env.example @@ -0,0 +1,5 @@ +APP_NAME=dubug +APP_CODE=dubug +SERVER=http://localhost:8094 +API_BASE=http://localhost:8094/ +SOCKET_PATH=/socket.io diff --git a/packages/web/package.json b/packages/web/package.json index 895d34d..b78a297 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -5,8 +5,7 @@ "private": true, "scripts": { "start": "cross-env NODE_ENV=development webpack serve --config build/webpack.dev.js", - "build": "rm -rf dist && cross-env NODE_ENV=production webpack --config build/webpack.prod.js", - "build-relative": "rm -rf dist && cross-env NODE_ENV=production PublicPath=./ webpack --config build/webpack.prod.js" + "build": "rm -rf dist && cross-env NODE_ENV=production webpack --config build/webpack.prod.js" }, "dependencies": { "@loadable/component": "^5.15.0", diff --git a/packages/web/src/@fiora/config/client.ts b/packages/web/src/@fiora/config/client.ts index 1e16f3a..2f72184 100644 --- a/packages/web/src/@fiora/config/client.ts +++ b/packages/web/src/@fiora/config/client.ts @@ -1,12 +1,13 @@ import { MB } from '../utils/const'; export default { - app_name: 'mattuy-laptop', - app_code: 'iasdjfkwe3ds-qw3rjkwjfda8', + app_name: process.env.APP_NAME || 'debug', + app_code: process.env.APP_CODE || 'debug', server: - process.env.Server || - (process.env.NODE_ENV === 'development' ? '//localhost:9200/' : '/bg/'), - + process.env.SERVER || + (process.env.NODE_ENV === 'development' ? '//localhost:8094' : '/'), + socketPath: process.env.SOCKET_PATH || '/socket.io', + apiBase: process.env.API_BASE || '/', maxImageSize: process.env.MaxImageSize ? parseInt(process.env.MaxImageSize, 10) : MB * 5, @@ -24,16 +25,4 @@ export default { defaultTheme: process.env.DefaultTheme || 'cool', sound: process.env.Sound || 'default', tagColorMode: process.env.TagColorMode || 'fixedColor', - - /** - * 前端监控: https://yueying.effirst.com/index - * 值为监控应用id, 为空则不启用监控 - */ - frontendMonitorAppId: process.env.FrontendMonitorAppId || '', - - // 禁止用户撤回消息, 不包括管理员, 管理员始终能撤回任何消息 - // 默认是禁止的 - disableDeleteMessage: process.env.DisableDeleteMessage - ? process.env.DisableDeleteMessage === 'true' - : false, }; diff --git a/packages/web/src/socket.ts b/packages/web/src/socket.ts index 5389a78..b3e22fe 100644 --- a/packages/web/src/socket.ts +++ b/packages/web/src/socket.ts @@ -22,8 +22,10 @@ window.onblur = () => { windowStatus = 'blur'; }; +// 只能通过path参数指定socket url,即使uri参数包含路径也会被忽略 const socket = IO(config.server, { autoConnect: false, + path: config.socketPath, }); socket.on('connect', async () => { diff --git a/packages/web/src/template.html b/packages/web/src/template.html index d850c62..74299ca 100644 --- a/packages/web/src/template.html +++ b/packages/web/src/template.html @@ -2,10 +2,7 @@ - fiora - - - + vchat <% if (process.env.NODE_ENV === 'production') { %> @@ -14,7 +11,7 @@ - + diff --git a/packages/web/src/utils/uploadFile.ts b/packages/web/src/utils/uploadFile.ts index e704b03..be25e36 100644 --- a/packages/web/src/utils/uploadFile.ts +++ b/packages/web/src/utils/uploadFile.ts @@ -9,10 +9,11 @@ import { sessionID } from '../socket'; export default async function uploadFile(blob: Blob): Promise { const formData = new FormData(); formData.append('file', blob); - const resp = await fetch(config.server + 'upload_file', { - headers: { - session_id: sessionID, - }, + const url = + config.apiBase + + (config.apiBase.endsWith('/') ? 'upload_file' : '/upload_file'); + const resp = await fetch(url, { + headers: { 'sid': sessionID }, method: 'POST', body: formData, }); diff --git a/script/publish-web.sh b/script/publish-web.sh deleted file mode 100755 index b0ab25c..0000000 --- a/script/publish-web.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")" && cd ../packages/web || exit 1 -if ! npm run-script build; then - exit 1 -fi -if [[ $(ssh master@home.mattuy.top -e /data/share/www-root/vchat) ]]; then - echo "远程目录已存在,跳过复制" - exit -fi -echo 复制编译结果到远程目录... -scp -r ./dist/fiora master@home.mattuy.top:/data/share/www-root/vchat