From 88d38ba8d194570b74979f7df286eeed7e83d398 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 21 Jan 2022 13:45:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=91=E9=80=81=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Module/Base.php | 31 ++++++++++++---------------- app/Tasks/WebSocketDialogMsgTask.php | 5 +++++ resources/assets/js/functions/web.js | 20 ++++++++++++++++++ resources/assets/js/store/actions.js | 10 ++++----- 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/app/Module/Base.php b/app/Module/Base.php index f48f12dd..dd08872b 100755 --- a/app/Module/Base.php +++ b/app/Module/Base.php @@ -725,7 +725,7 @@ class Base public static function getHost($var = '') { if (empty($var)) { - $var = self::url(); + $var = url("/"); } $arr = parse_url($var); return $arr['host']; @@ -738,6 +738,7 @@ class Base */ public static function fillUrl($str = '') { + global $_A; if (is_array($str)) { foreach ($str as $key => $item) { $str[$key] = Base::fillUrl($item); @@ -756,7 +757,14 @@ class Base ) { return $str; } else { - return self::url($str); + if ($_A['__fill_url_remote_url'] === true) { + return "{{RemoteURL}}" . $str; + } + try { + return url($str); + } catch (\Throwable) { + return self::getSchemeAndHost() . "/" . $str; + } } } @@ -773,25 +781,12 @@ class Base } return $str; } - return Base::leftDelete($str, self::url() . '/'); - } - - /** - * 获取url - * @param $path - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\UrlGenerator|string - */ - public static function url($path = '') - { try { - $url = url($path); - if (str_starts_with($url, "http://localhost/")) { - $url = "http://localhost:" . env("APP_PORT", "80") . "/" . substr($url, 17); - } + $find = url(''); } catch (\Throwable) { - $url = self::getSchemeAndHost() . "/" . $path; + $find = self::getSchemeAndHost(); } - return $url; + return Base::leftDelete($str, $find . '/'); } /** diff --git a/app/Tasks/WebSocketDialogMsgTask.php b/app/Tasks/WebSocketDialogMsgTask.php index 7eb25b55..b8dbb2b5 100644 --- a/app/Tasks/WebSocketDialogMsgTask.php +++ b/app/Tasks/WebSocketDialogMsgTask.php @@ -33,6 +33,11 @@ class WebSocketDialogMsgTask extends AbstractTask public function start() { + global $_A; + $_A = [ + '__fill_url_remote_url' => true, + ]; + // $msg = WebSocketDialogMsg::find($this->id); if (empty($msg)) { return; diff --git a/resources/assets/js/functions/web.js b/resources/assets/js/functions/web.js index 9bb74b1b..28d2c8af 100755 --- a/resources/assets/js/functions/web.js +++ b/resources/assets/js/functions/web.js @@ -76,6 +76,26 @@ } }, + /** + * 格式化websocket的消息 + * @param data + */ + formatWebsocketMessageDetail(data) { + if ($A.isJson(data)) { + for (let key in data) { + if (!data.hasOwnProperty(key)) continue; + data[key] = $A.formatWebsocketMessageDetail(data[key]); + } + } else if ($A.isArray(data)) { + data.forEach((val, index) => { + data[index] = $A.formatWebsocketMessageDetail(val); + }); + } else if (typeof data === "string") { + data = data.replace(/\{\{RemoteURL\}\}/g, this.apiUrl('../')) + } + return data; + }, + /** * 格式化时间 * @param date diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 43afb132..24dec0a5 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1956,11 +1956,11 @@ export default { // state.ws = new WebSocket(url); state.ws.onopen = (e) => { - console.log("[WS] Open", $A.formatDate()) + // console.log("[WS] Open", $A.formatDate()) state.wsOpenNum++; }; state.ws.onclose = (e) => { - console.log("[WS] Close", $A.formatDate()) + // console.log("[WS] Close", $A.formatDate()) state.ws = null; // clearTimeout(state.wsTimeout); @@ -1969,7 +1969,7 @@ export default { }, 3000); }; state.ws.onerror = (e) => { - console.log("[WS] Error", $A.formatDate()) + // console.log("[WS] Error", $A.formatDate()) state.ws = null; // clearTimeout(state.wsTimeout); @@ -1979,7 +1979,7 @@ export default { }; state.ws.onmessage = (e) => { // console.log("[WS] Message", e); - const msgDetail = $A.jsonParse(e.data); + const msgDetail = $A.formatWebsocketMessageDetail($A.jsonParse(e.data)); const {type, msgId} = msgDetail; switch (type) { case "open": @@ -2003,7 +2003,7 @@ export default { try { call(msgDetail); } catch (err) { - console.log("[WS] Callerr", err); + // console.log("[WS] Callerr", err); } } });