网络请求,封装简化注释
This commit is contained in:
21
api/login.js
Normal file
21
api/login.js
Normal file
@ -0,0 +1,21 @@
|
||||
import request from '../utils/request'
|
||||
// 登录方法
|
||||
export function login(data) {
|
||||
return request({
|
||||
url: '/auth/app/login', // 假设登录接口是 /login
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 注册发送验证码
|
||||
export function sendRegisterSms(data) {
|
||||
return request({
|
||||
url: '/api/appUser/sendRegisterSms', //发送验证码注册
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -53,6 +53,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { login } from '@/api/login';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
@ -1,41 +1,28 @@
|
||||
import mqtt from 'mqtt/dist/mqtt.js'; // 根据典型的 uniapp 结构调整路径
|
||||
import mqtt from 'mqtt/dist/mqtt.js';
|
||||
|
||||
// 请替换为您的 MQTT代理(broker)详细信息
|
||||
const MQTT_BROKER_URL = 'ws://your-mqtt-broker-address:your-port/mqtt'; // 使用 ws:// 或 wss://
|
||||
const MQTT_OPTIONS = {
|
||||
connectTimeout: 4000, // 连接超时时间 (毫秒)
|
||||
clientId: `mqtt_client_${Math.random().toString(16).substr(2, 8)}`, // 唯一的客户端ID
|
||||
username: 'your-username', // 用户名 (可选)
|
||||
password: 'your-password', // 密码 (可选)
|
||||
clean: true, // 对于大多数移动应用场景,建议为 true
|
||||
// 更多选项请参考 MQTT.js 文档
|
||||
// Keepalive (心跳包间隔) 通常为 30-60 秒。
|
||||
// reconnectPeriod: 1000, // 每次重新连接尝试之间的间隔时间 (毫秒)
|
||||
connectTimeout: 4000,
|
||||
clientId: `mqtt_client_${Math.random().toString(16).substr(2, 8)}`,
|
||||
username: 'your-username',
|
||||
password: 'your-password',
|
||||
clean: true,
|
||||
};
|
||||
|
||||
let client = null; // MQTT 客户端实例
|
||||
let connectPromise = null; // 用于跟踪连接过程的 Promise
|
||||
let client = null;
|
||||
let connectPromise = null;
|
||||
|
||||
// 连接到 MQTT 代理
|
||||
export function connect() {
|
||||
// 如果客户端已存在并且已连接,则直接返回
|
||||
if (client && client.connected) {
|
||||
return Promise.resolve(client);
|
||||
}
|
||||
|
||||
// 如果正在连接中,则返回当前的连接 Promise
|
||||
if (connectPromise) {
|
||||
return connectPromise;
|
||||
}
|
||||
|
||||
let url = MQTT_BROKER_URL;
|
||||
// #ifdef MP-WEIXIN || APP-PLUS
|
||||
// 对于微信小程序和 App,某些代理可能需要 'wx://' 或 'wxs://'
|
||||
// if (MQTT_BROKER_URL.startsWith('ws://')) {
|
||||
// url = MQTT_BROKER_URL.replace('ws://', 'wx://');
|
||||
// } else if (MQTT_BROKER_URL.startsWith('wss://')) {
|
||||
// url = MQTT_BROKER_URL.replace('wss://', 'wxs://');
|
||||
// }
|
||||
// #endif
|
||||
|
||||
console.log(`正在连接到 MQTT 代理: ${url}`);
|
||||
@ -44,7 +31,7 @@ export function connect() {
|
||||
connectPromise = new Promise((resolve, reject) => {
|
||||
client.on('connect', () => {
|
||||
console.log('MQTT 已连接');
|
||||
connectPromise = null; // 连接成功后清除 Promise
|
||||
connectPromise = null;
|
||||
resolve(client);
|
||||
});
|
||||
|
||||
@ -54,19 +41,14 @@ export function connect() {
|
||||
|
||||
client.on('error', (err) => {
|
||||
console.error('MQTT 连接错误:', err);
|
||||
if (connectPromise) { // 仅当是初始连接尝试时才 reject
|
||||
if (connectPromise) {
|
||||
reject(err);
|
||||
}
|
||||
connectPromise = null; // 出错时清除 Promise
|
||||
// 如果合适,可以考虑在此处尝试断开连接或清理客户端
|
||||
// client.end(true, () => console.log('客户端因错误被强制结束.'));
|
||||
connectPromise = null;
|
||||
});
|
||||
|
||||
client.on('close', () => {
|
||||
console.log('MQTT 连接已关闭');
|
||||
// 如果连接意外关闭,您可能需要将客户端置为 null
|
||||
// 或设置一个标志,以便 `connect()` 可以尝试建立新连接。
|
||||
// client = null; // 或者管理重连逻辑
|
||||
connectPromise = null;
|
||||
});
|
||||
|
||||
@ -166,38 +148,31 @@ export function unsubscribe(topic) {
|
||||
});
|
||||
} else {
|
||||
console.warn('MQTT 客户端未连接,无法取消订阅。');
|
||||
resolve(); // 或 reject,取决于期望的行为
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 处理传入的消息
|
||||
// 连接后设置一次此回调至关重要。
|
||||
export function onMessage(callback) {
|
||||
if (client) {
|
||||
client.on('message', callback); // 回调格式: (topic, message, packet) => { ... }
|
||||
} else {
|
||||
// 可能是 connect() 初始化 'client' 之前调用了此函数
|
||||
// 延迟附加监听器,直到客户端可用。
|
||||
const checkClientInterval = setInterval(() => {
|
||||
if (client) {
|
||||
client.on('message', callback);
|
||||
clearInterval(checkClientInterval);
|
||||
} else if (connectPromise === null && client === null) {
|
||||
// 如果 connectPromise 为 null且 client 为 null,表示 connect() 未被调用或已永久失败。
|
||||
console.warn('MQTT 客户端未初始化以处理 onMessage,且没有连接尝试正在进行中。');
|
||||
clearInterval(checkClientInterval);
|
||||
}
|
||||
}, 100); // 每 100 毫秒检查一次
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
|
||||
// 您可能希望直接公开客户端以用于高级用例或特定的事件处理
|
||||
export function getClient() {
|
||||
return client;
|
||||
}
|
||||
|
||||
// 可选:添加一个函数来检查连接状态
|
||||
export function isConnected() {
|
||||
return client && client.connected;
|
||||
}
|
||||
|
@ -11,22 +11,24 @@ service.interceptors.request.use(
|
||||
console.log('Full Request URL:', config.baseURL + config.url)
|
||||
const token = uni.getStorageSync('token')
|
||||
if (token) {
|
||||
|
||||
config.headers['Authorization'] = 'Bearer ' + token
|
||||
}
|
||||
config.headers['Content-Type'] = config.headers['Content-Type'] || 'application/json';
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
// 处理请求错误
|
||||
console.error('Request Error:', error) // 用于调试
|
||||
console.log('Request Error:', error)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
// 响应拦截器
|
||||
service.interceptors.response.use(
|
||||
response => {
|
||||
const res = response.data
|
||||
console.error('API Error:', res.message || 'Error')
|
||||
if (res.code !== 200 && res.code !== 0) {
|
||||
console.log('API Error:', res.message || 'Error')
|
||||
return Promise.reject(new Error(res.message || 'Error'))
|
||||
} else {
|
||||
return res
|
||||
|
Reference in New Issue
Block a user