no message

This commit is contained in:
kuaifan 2022-05-22 11:53:25 +08:00
parent ebf9686a05
commit 2c99033f1a
6 changed files with 61 additions and 29 deletions

View File

@ -7,6 +7,7 @@ use App\Models\UmengAlias;
use App\Models\User;
use App\Models\UserEmailVerification;
use App\Models\UserTransfer;
use App\Models\WebSocket;
use App\Module\Base;
use Arr;
use Cache;
@ -734,4 +735,29 @@ class UsersController extends AbstractController
return Base::retError('添加错误');
}
}
/**
* @api {get} api/users/ws/exist 15. websocket是否存在
*
* @apiDescription 查询websocket连接是否存在
* @apiVersion 1.0.0
* @apiGroup users
* @apiName ws__exist
*
* @apiSuccess {Number} ret 返回状态码1存在、0不存在
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据(同"获取我的信息"接口)
*/
public function ws__exist()
{
$fd = Request::header('fd');
if (empty($fd)) {
return Base::retError('empty');
}
if (WebSocket::whereFd($fd)->exists()) {
return Base::retError('not exist');
} else {
return Base::retSuccess('success');
}
}
}

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
36ad3964512174cc
d7ef78c75bbce249

View File

@ -252,18 +252,20 @@ export default {
if (this.$openVlog) {
console.log('onPagePause');
}
this.$store.dispatch("getBasicData", -1)
}
//
window.__onPageResume = (num) => {
if (this.$openVlog) {
console.log('onPageResume', num);
console.log('ws', this.ws);
console.log('ws.readyState', this.ws ? this.ws.readyState : null);
console.log('ws', this.ws, this.ws ? this.ws.readyState : null);
}
if (num > 0) {
if (this.ws === null || this.ws.readyState === WebSocket.CLOSED) {
this.$store.dispatch("call", {
url: 'users/ws/exist',
}).catch(_ => {
this.$store.dispatch("websocketConnection");
}
});
this.$store.dispatch("getBasicData", 5000)
}
}

View File

@ -103,21 +103,30 @@ Vue.prototype.goBack = function (number) {
}
};
Vue.prototype.$A = $A;
Vue.prototype.$Electron = null;
Vue.prototype.$Platform = "web";
Vue.prototype.$isMainElectron = false;
Vue.prototype.$isSubElectron = false;
Vue.prototype.$isEEUiApp = isEEUiApp;
Vue.prototype.$isDesktop = $A.isDesktop();
Vue.prototype.$openVlog = $A.getStorageString("vlog::open") === "open";
// 全局对象/变量
$A.Electron = null;
$A.Platform = "web";
$A.isMainElectron = false;
$A.isSubElectron = false;
$A.isEEUiApp = isEEUiApp;
$A.isDesktop = $A.isDesktop();
$A.openVlog = $A.getStorageString("vlog::open") === "open";
if (isElectron) {
Vue.prototype.$Electron = electron;
Vue.prototype.$Platform = /macintosh|mac os x/i.test(navigator.userAgent) ? "mac" : "win";
Vue.prototype.$isMainElectron = /\s+MainTaskWindow\//.test(window.navigator.userAgent);
Vue.prototype.$isSubElectron = /\s+SubTaskWindow\//.test(window.navigator.userAgent);
$A.Electron = electron;
$A.Platform = /macintosh|mac os x/i.test(navigator.userAgent) ? "mac" : "win";
$A.isMainElectron = /\s+MainTaskWindow\//.test(window.navigator.userAgent);
$A.isSubElectron = /\s+SubTaskWindow\//.test(window.navigator.userAgent);
}
Vue.prototype.$A = $A;
Vue.prototype.$Electron = $A.Electron;
Vue.prototype.$Platform = $A.Platform;
Vue.prototype.$isMainElectron = $A.isMainElectron;
Vue.prototype.$isSubElectron = $A.isSubElectron;
Vue.prototype.$isEEUiApp = $A.isEEUiApp;
Vue.prototype.$isDesktop = $A.isDesktop;
Vue.prototype.$openVlog = $A.openVlog;
Vue.config.productionTip = false;
const app = new Vue({
@ -138,13 +147,6 @@ $A.Modal = app.$Modal;
$A.store = app.$store;
$A.L = app.$L;
$A.Electron = app.$Electron;
$A.Platform = app.$Platform;
$A.isMainElectron = app.$isMainElectron;
$A.isSubElectron = app.$isSubElectron;
$A.isEEUiApp = app.$isEEUiApp;
$A.isDesktop = app.$isDesktop;
$A.openVlog = app.$openVlog;
$A.execMainDispatch = (action, data) => {
if ($A.isSubElectron) {
$A.Electron.sendMessage('sendForwardMain', {

View File

@ -259,10 +259,12 @@ export default {
if (typeof timeout === "number") {
return new Promise(resolve => {
window.__getBasicData && clearTimeout(window.__getBasicData)
window.__getBasicData = setTimeout(() => {
dispatch("getBasicData", null)
resolve()
}, timeout)
if (timeout > -1) {
window.__getBasicData = setTimeout(() => {
dispatch("getBasicData", null)
resolve()
}, timeout)
}
});
}
dispatch("getProjects").catch(() => {});