ваше сообщение коммита
This commit is contained in:
@@ -16,14 +16,14 @@ class CacheService {
|
||||
const cached = this.tableCache.get(cacheKey);
|
||||
|
||||
if (cached && Date.now() - cached.timestamp < this.tableCacheTimeout) {
|
||||
console.log(`[CacheService] ✅ КЭШ ПОПАДАНИЕ для таблицы ${tableId} (${cacheKey})`);
|
||||
// console.log(`[CacheService] ✅ КЭШ ПОПАДАНИЕ для таблицы ${tableId} (${cacheKey})`);
|
||||
return cached.data;
|
||||
}
|
||||
|
||||
if (cached) {
|
||||
console.log(`[CacheService] ⏰ Кэш истек для таблицы ${tableId} (${cacheKey})`);
|
||||
// console.log(`[CacheService] ⏰ Кэш истек для таблицы ${tableId} (${cacheKey})`);
|
||||
} else {
|
||||
console.log(`[CacheService] ❌ Кэш отсутствует для таблицы ${tableId} (${cacheKey})`);
|
||||
// console.log(`[CacheService] ❌ Кэш отсутствует для таблицы ${tableId} (${cacheKey})`);
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -35,7 +35,7 @@ class CacheService {
|
||||
data,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
console.log(`[CacheService] Сохранены данные таблицы ${tableId} в кэш`);
|
||||
// console.log(`[CacheService] Сохранены данные таблицы ${tableId} в кэш`);
|
||||
}
|
||||
|
||||
// Кэширование relations
|
||||
@@ -44,7 +44,7 @@ class CacheService {
|
||||
const cached = this.relationsCache.get(cacheKey);
|
||||
|
||||
if (cached && Date.now() - cached.timestamp < this.relationsCacheTimeout) {
|
||||
console.log(`[CacheService] Используем кэшированные relations для строки ${rowId}`);
|
||||
// console.log(`[CacheService] Используем кэшированные relations для строки ${rowId}`);
|
||||
return cached.data;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ class CacheService {
|
||||
data,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
console.log(`[CacheService] Сохранены relations строки ${rowId} в кэш`);
|
||||
// console.log(`[CacheService] Сохранены relations строки ${rowId} в кэш`);
|
||||
}
|
||||
|
||||
// Очистка кэша
|
||||
@@ -69,11 +69,11 @@ class CacheService {
|
||||
this.tableCache.delete(key);
|
||||
}
|
||||
}
|
||||
console.log(`[CacheService] Очищен кэш таблицы ${tableId}`);
|
||||
// console.log(`[CacheService] Очищен кэш таблицы ${tableId}`);
|
||||
} else {
|
||||
// Очищаем весь кэш таблиц
|
||||
this.tableCache.clear();
|
||||
console.log('[CacheService] Очищен весь кэш таблиц');
|
||||
// console.log('[CacheService] Очищен весь кэш таблиц');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,11 +85,11 @@ class CacheService {
|
||||
this.relationsCache.delete(key);
|
||||
}
|
||||
}
|
||||
console.log(`[CacheService] Очищен кэш relations строки ${rowId}`);
|
||||
// console.log(`[CacheService] Очищен кэш relations строки ${rowId}`);
|
||||
} else {
|
||||
// Очищаем весь кэш relations
|
||||
this.relationsCache.clear();
|
||||
console.log('[CacheService] Очищен весь кэш relations');
|
||||
// console.log('[CacheService] Очищен весь кэш relations');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ class CacheService {
|
||||
clearAll() {
|
||||
this.tableCache.clear();
|
||||
this.relationsCache.clear();
|
||||
console.log('[CacheService] Очищены все кэши');
|
||||
// console.log('[CacheService] Очищены все кэши');
|
||||
}
|
||||
|
||||
// Получение статистики кэша
|
||||
|
||||
@@ -27,10 +27,10 @@ export default {
|
||||
async deleteContact(id) {
|
||||
try {
|
||||
const res = await api.delete(`/users/${id}`);
|
||||
console.log('Ответ на удаление контакта:', res.status, res.data);
|
||||
// console.log('Ответ на удаление контакта:', res.status, res.data);
|
||||
return res.data;
|
||||
} catch (err) {
|
||||
console.error('Ошибка при удалении контакта:', err.response?.status, err.response?.data, err);
|
||||
// console.error('Ошибка при удалении контакта:', err.response?.status, err.response?.data, err);
|
||||
|
||||
// Если пользователь уже удален (404), считаем это успехом
|
||||
if (err.response?.status === 404) {
|
||||
|
||||
@@ -27,7 +27,7 @@ class DLEV2Service {
|
||||
const response = await api.post('/dle-v2', dleParams);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Ошибка при создании DLE v2:', error);
|
||||
// console.error('Ошибка при создании DLE v2:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class DLEV2Service {
|
||||
const response = await api.get('/dle-v2');
|
||||
return response.data.data || [];
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении списка DLE v2:', error);
|
||||
// console.error('Ошибка при получении списка DLE v2:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -55,7 +55,7 @@ class DLEV2Service {
|
||||
const response = await api.get('/dle-v2/defaults');
|
||||
return response.data.data;
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении настроек по умолчанию DLE v2:', error);
|
||||
// console.error('Ошибка при получении настроек по умолчанию DLE v2:', error);
|
||||
return {
|
||||
votingDelay: 1,
|
||||
votingPeriod: 45818,
|
||||
@@ -76,7 +76,7 @@ class DLEV2Service {
|
||||
const response = await api.delete(`/dle-v2/${dleAddress}`);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Ошибка при удалении DLE v2:', error);
|
||||
// console.error('Ошибка при удалении DLE v2:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,13 +56,13 @@ export default {
|
||||
return res.data;
|
||||
},
|
||||
async deleteTable(id) {
|
||||
console.log('tablesService.deleteTable called with id:', id);
|
||||
// console.log('tablesService.deleteTable called with id:', id);
|
||||
try {
|
||||
const res = await api.delete(`${tablesApi}/${id}`);
|
||||
console.log('Delete response:', res.data);
|
||||
// console.log('Delete response:', res.data);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
console.error('Error in deleteTable service:', error);
|
||||
// console.error('Error in deleteTable service:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -18,14 +18,14 @@ export const fetchTokenBalances = async (address = null) => {
|
||||
let url = '/tokens/balances';
|
||||
if (address) {
|
||||
url += `?address=${encodeURIComponent(address)}`;
|
||||
console.log(`Fetching token balances for specific address: ${address}`);
|
||||
// console.log(`Fetching token balances for specific address: ${address}`);
|
||||
} else {
|
||||
console.log('Fetching token balances for session user');
|
||||
// console.log('Fetching token balances for session user');
|
||||
}
|
||||
const response = await api.get(url);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching token balances:', error);
|
||||
// console.error('Error fetching token balances:', error);
|
||||
return {
|
||||
eth: '0',
|
||||
bsc: '0',
|
||||
|
||||
@@ -15,7 +15,7 @@ import axios from '../api/axios';
|
||||
import { SiweMessage } from 'siwe';
|
||||
|
||||
export async function connectWithWallet() {
|
||||
console.log('Starting wallet connection...');
|
||||
// console.log('Starting wallet connection...');
|
||||
|
||||
try {
|
||||
// Проверяем наличие MetaMask
|
||||
@@ -23,12 +23,12 @@ export async function connectWithWallet() {
|
||||
throw new Error('MetaMask not detected. Please install MetaMask.');
|
||||
}
|
||||
|
||||
console.log('MetaMask detected, requesting accounts...');
|
||||
// console.log('MetaMask detected, requesting accounts...');
|
||||
|
||||
// Запрашиваем доступ к аккаунтам
|
||||
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
|
||||
|
||||
console.log('Got accounts:', accounts);
|
||||
// console.log('Got accounts:', accounts);
|
||||
|
||||
if (!accounts || accounts.length === 0) {
|
||||
throw new Error('No accounts found. Please unlock MetaMask.');
|
||||
@@ -36,13 +36,13 @@ export async function connectWithWallet() {
|
||||
|
||||
// Берем первый аккаунт
|
||||
const address = ethers.getAddress(accounts[0]);
|
||||
console.log('Normalized address:', address);
|
||||
// console.log('Normalized address:', address);
|
||||
|
||||
// Запрашиваем nonce с сервера
|
||||
console.log('Requesting nonce...');
|
||||
// console.log('Requesting nonce...');
|
||||
const nonceResponse = await axios.get(`/auth/nonce?address=${address}`);
|
||||
const nonce = nonceResponse.data.nonce;
|
||||
console.log('Got nonce:', nonce);
|
||||
// console.log('Got nonce:', nonce);
|
||||
|
||||
// Создаем сообщение для подписи
|
||||
const domain = window.location.host;
|
||||
@@ -63,30 +63,30 @@ export async function connectWithWallet() {
|
||||
});
|
||||
|
||||
const message = siweMessage.prepareMessage();
|
||||
console.log('SIWE message:', message);
|
||||
console.log('SIWE message details:', {
|
||||
domain,
|
||||
address,
|
||||
statement,
|
||||
uri: origin,
|
||||
version: '1',
|
||||
chainId: 1,
|
||||
nonce,
|
||||
issuedAt,
|
||||
resources: [`${origin}/api/auth/verify`],
|
||||
});
|
||||
// console.log('SIWE message:', message);
|
||||
// console.log('SIWE message details:', {
|
||||
// domain,
|
||||
// address,
|
||||
// statement,
|
||||
// uri: origin,
|
||||
// version: '1',
|
||||
// chainId: 1,
|
||||
// nonce,
|
||||
// issuedAt,
|
||||
// resources: [`${origin}/api/auth/verify`],
|
||||
// });
|
||||
|
||||
// Запрашиваем подпись
|
||||
console.log('Requesting signature...');
|
||||
// console.log('Requesting signature...');
|
||||
const signature = await window.ethereum.request({
|
||||
method: 'personal_sign',
|
||||
params: [message, address.toLowerCase()],
|
||||
});
|
||||
|
||||
console.log('Got signature:', signature);
|
||||
// console.log('Got signature:', signature);
|
||||
|
||||
// Отправляем подпись на сервер для верификации
|
||||
console.log('Sending verification request...');
|
||||
// console.log('Sending verification request...');
|
||||
const verificationResponse = await axios.post('/auth/verify', {
|
||||
signature,
|
||||
address,
|
||||
@@ -94,7 +94,7 @@ export async function connectWithWallet() {
|
||||
issuedAt,
|
||||
});
|
||||
|
||||
console.log('Verification response:', verificationResponse.data);
|
||||
// console.log('Verification response:', verificationResponse.data);
|
||||
|
||||
// Обновляем состояние аутентификации
|
||||
if (verificationResponse.data.success) {
|
||||
@@ -107,7 +107,7 @@ export async function connectWithWallet() {
|
||||
|
||||
return verificationResponse.data;
|
||||
} catch (error) {
|
||||
console.error('Error connecting wallet:', error);
|
||||
// console.error('Error connecting wallet:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class WebSshService {
|
||||
this.isAgentRunning = false;
|
||||
return { running: false };
|
||||
} catch (error) {
|
||||
console.error('Агент не доступен:', error);
|
||||
// console.error('Агент не доступен:', error);
|
||||
this.isAgentRunning = false;
|
||||
return { running: false, error: error.message };
|
||||
}
|
||||
@@ -84,7 +84,7 @@ class WebSshService {
|
||||
return await this.downloadAndInstallAgent();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при установке агента:', error);
|
||||
// console.error('Ошибка при установке агента:', error);
|
||||
return await this.downloadAndInstallAgent();
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ EOF
|
||||
requiresManualInstall: true
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Ошибка при создании установочного скрипта:', error);
|
||||
// console.error('Ошибка при создании установочного скрипта:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: 'Ошибка при подготовке установки агента',
|
||||
@@ -216,7 +216,7 @@ EOF
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при создании туннеля:', error);
|
||||
// console.error('Ошибка при создании туннеля:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: `Ошибка подключения к агенту: ${error.message}`
|
||||
@@ -259,7 +259,7 @@ EOF
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при отключении туннеля:', error);
|
||||
// console.error('Ошибка при отключении туннеля:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: `Ошибка подключения к агенту: ${error.message}`
|
||||
@@ -291,7 +291,7 @@ EOF
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении статуса:', error);
|
||||
// console.error('Ошибка при получении статуса:', error);
|
||||
return {
|
||||
connected: false,
|
||||
domain: null,
|
||||
@@ -337,7 +337,7 @@ app.post('/tunnel/create', async (req, res) => {
|
||||
try {
|
||||
const { domain, email, sshHost, sshUser, sshKey, localPort, serverPort, sshPort } = req.body;
|
||||
|
||||
console.log('Создание туннеля для домена:', domain);
|
||||
// console.log('Создание туннеля для домена:', domain);
|
||||
|
||||
// Сохраняем SSH ключ во временный файл
|
||||
const keyPath = path.join(__dirname, 'temp_ssh_key');
|
||||
@@ -395,11 +395,11 @@ server {
|
||||
const sshProcess = spawn('ssh', sshArgs);
|
||||
|
||||
sshProcess.on('error', (error) => {
|
||||
console.error('SSH процесс ошибка:', error);
|
||||
// console.error('SSH процесс ошибка:', error);
|
||||
});
|
||||
|
||||
sshProcess.on('close', (code) => {
|
||||
console.log('SSH процесс завершен с кодом:', code);
|
||||
// console.log('SSH процесс завершен с кодом:', code);
|
||||
tunnelState.connected = false;
|
||||
});
|
||||
|
||||
@@ -419,7 +419,7 @@ server {
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Ошибка создания туннеля:', error);
|
||||
// console.error('Ошибка создания туннеля:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: error.message
|
||||
@@ -446,7 +446,7 @@ app.post('/tunnel/disconnect', (req, res) => {
|
||||
message: 'Туннель отключен'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Ошибка отключения туннеля:', error);
|
||||
// console.error('Ошибка отключения туннеля:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: error.message
|
||||
@@ -465,7 +465,7 @@ app.get('/tunnel/status', (req, res) => {
|
||||
|
||||
// Запуск сервера
|
||||
app.listen(PORT, 'localhost', () => {
|
||||
console.log(\`WebSSH Agent запущен на порту \${PORT}\`);
|
||||
// console.log(\`WebSSH Agent запущен на порту \${PORT}\`);
|
||||
});
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
class WebSocketService {
|
||||
constructor() {
|
||||
console.log('🔌 [WebSocket] Конструктор вызван');
|
||||
// console.log('🔌 [WebSocket] Конструктор вызван');
|
||||
this.ws = null;
|
||||
this.isConnected = false;
|
||||
this.reconnectAttempts = 0;
|
||||
@@ -24,14 +24,14 @@ class WebSocketService {
|
||||
this.reconnectDelay = 1000; // 1 секунда
|
||||
this.listeners = new Map();
|
||||
this.userId = null;
|
||||
console.log('🔌 [WebSocket] Конструктор завершен');
|
||||
// console.log('🔌 [WebSocket] Конструктор завершен');
|
||||
}
|
||||
|
||||
// Подключение к WebSocket серверу
|
||||
connect(userId = null) {
|
||||
console.log('🔌 [WebSocket] Попытка подключения, userId:', userId);
|
||||
// console.log('🔌 [WebSocket] Попытка подключения, userId:', userId);
|
||||
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
||||
console.log('🔌 [WebSocket] Уже подключен');
|
||||
// console.log('🔌 [WebSocket] Уже подключен');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -43,13 +43,13 @@ class WebSocketService {
|
||||
// В Docker окружении используем тот же хост, что и для HTTP
|
||||
const wsUrl = `${protocol}//${window.location.host}/ws`;
|
||||
|
||||
console.log('🔌 [WebSocket] Подключение к:', wsUrl);
|
||||
console.log('🔌 [WebSocket] Текущий хост:', window.location.host);
|
||||
// console.log('🔌 [WebSocket] Подключение к:', wsUrl);
|
||||
// console.log('🔌 [WebSocket] Текущий хост:', window.location.host);
|
||||
|
||||
this.ws = new WebSocket(wsUrl);
|
||||
|
||||
this.ws.onopen = () => {
|
||||
console.log('✅ [WebSocket] Подключение установлено');
|
||||
// console.log('✅ [WebSocket] Подключение установлено');
|
||||
this.isConnected = true;
|
||||
this.reconnectAttempts = 0;
|
||||
|
||||
@@ -65,66 +65,42 @@ class WebSocketService {
|
||||
};
|
||||
|
||||
this.ws.onclose = (event) => {
|
||||
console.log('🔌 [WebSocket] Соединение закрыто:', event.code, event.reason);
|
||||
// console.log('🔌 [WebSocket] Соединение закрыто:', event.code, event.reason);
|
||||
this.isConnected = false;
|
||||
this.emit('disconnected', event);
|
||||
|
||||
// Попытка переподключения
|
||||
if (this.reconnectAttempts < this.maxReconnectAttempts) {
|
||||
this.reconnectAttempts++;
|
||||
console.log(`🔄 [WebSocket] Попытка переподключения ${this.reconnectAttempts}/${this.maxReconnectAttempts}`);
|
||||
// console.log(`🔄 [WebSocket] Попытка переподключения ${this.reconnectAttempts}/${this.maxReconnectAttempts}`);
|
||||
|
||||
setTimeout(() => {
|
||||
this.connect(this.userId);
|
||||
}, this.reconnectDelay * this.reconnectAttempts);
|
||||
} else {
|
||||
console.error('❌ [WebSocket] Превышено максимальное количество попыток переподключения');
|
||||
// console.error('❌ [WebSocket] Превышено максимальное количество попыток переподключения');
|
||||
this.emit('reconnect-failed');
|
||||
}
|
||||
};
|
||||
|
||||
this.ws.onerror = (error) => {
|
||||
console.error('❌ [WebSocket] Ошибка соединения:', error);
|
||||
// console.error('❌ [WebSocket] Ошибка соединения:', error);
|
||||
this.emit('error', error);
|
||||
};
|
||||
|
||||
this.ws.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('📨 [WebSocket] Получено сообщение:', data);
|
||||
console.log('📨 [WebSocket] Тип сообщения:', data.type);
|
||||
// console.log('📨 [WebSocket] Получено сообщение:', data);
|
||||
// console.log('📨 [WebSocket] Тип сообщения:', data.type);
|
||||
this.handleMessage(data);
|
||||
} catch (error) {
|
||||
console.error('❌ [WebSocket] Ошибка парсинга сообщения:', error);
|
||||
// console.error('❌ [WebSocket] Ошибка парсинга сообщения:', error);
|
||||
}
|
||||
};
|
||||
|
||||
this.ws.onclose = (event) => {
|
||||
console.log('🔌 [WebSocket] Соединение закрыто:', event.code, event.reason);
|
||||
this.isConnected = false;
|
||||
this.emit('disconnected', event);
|
||||
|
||||
// Попытка переподключения
|
||||
if (this.reconnectAttempts < this.maxReconnectAttempts) {
|
||||
this.reconnectAttempts++;
|
||||
console.log(`🔄 [WebSocket] Попытка переподключения ${this.reconnectAttempts}/${this.maxReconnectAttempts}`);
|
||||
|
||||
setTimeout(() => {
|
||||
this.connect(this.userId);
|
||||
}, this.reconnectDelay * this.reconnectAttempts);
|
||||
} else {
|
||||
console.error('❌ [WebSocket] Превышено максимальное количество попыток переподключения');
|
||||
this.emit('reconnect-failed');
|
||||
}
|
||||
};
|
||||
|
||||
this.ws.onerror = (error) => {
|
||||
console.error('❌ [WebSocket] Ошибка соединения:', error);
|
||||
this.emit('error', error);
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ [WebSocket] Ошибка создания соединения:', error);
|
||||
// console.error('❌ [WebSocket] Ошибка создания соединения:', error);
|
||||
this.emit('error', error);
|
||||
}
|
||||
}
|
||||
@@ -134,7 +110,7 @@ class WebSocketService {
|
||||
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
||||
this.ws.send(JSON.stringify(data));
|
||||
} else {
|
||||
console.warn('⚠️ [WebSocket] Соединение не установлено, сообщение не отправлено:', data);
|
||||
// console.warn('⚠️ [WebSocket] Соединение не установлено, сообщение не отправлено:', data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,57 +118,57 @@ class WebSocketService {
|
||||
handleMessage(data) {
|
||||
switch (data.type) {
|
||||
case 'auth-success':
|
||||
console.log('✅ [WebSocket] Аутентификация успешна для пользователя:', data.userId);
|
||||
// console.log('✅ [WebSocket] Аутентификация успешна для пользователя:', data.userId);
|
||||
this.emit('auth-success', data);
|
||||
break;
|
||||
|
||||
case 'chat-message':
|
||||
console.log('💬 [WebSocket] Новое сообщение чата:', data.message);
|
||||
// console.log('💬 [WebSocket] Новое сообщение чата:', data.message);
|
||||
this.emit('chat-message', data.message);
|
||||
break;
|
||||
|
||||
case 'conversation-updated':
|
||||
console.log('📝 [WebSocket] Обновление диалога:', data.conversationId);
|
||||
// console.log('📝 [WebSocket] Обновление диалога:', data.conversationId);
|
||||
this.emit('conversation-updated', data.conversationId);
|
||||
break;
|
||||
|
||||
case 'messages-updated':
|
||||
console.log('📨 [WebSocket] Обновление сообщений');
|
||||
// console.log('📨 [WebSocket] Обновление сообщений');
|
||||
this.emit('messages-updated');
|
||||
break;
|
||||
|
||||
case 'contacts-updated':
|
||||
console.log('👥 [WebSocket] Обновление контактов');
|
||||
// console.log('👥 [WebSocket] Обновление контактов');
|
||||
this.emit('contacts-updated');
|
||||
break;
|
||||
|
||||
case 'tags-updated':
|
||||
console.log('🔔 [websocketService] Получено сообщение tags-updated:', data);
|
||||
console.log('🔔 [websocketService] Количество слушателей tags-updated:', this.listeners.get('tags-updated')?.length || 0);
|
||||
// console.log('🔔 [websocketService] Получено сообщение tags-updated:', data);
|
||||
// console.log('🔔 [websocketService] Количество слушателей tags-updated:', this.listeners.get('tags-updated')?.length || 0);
|
||||
this.emit('tags-updated', data);
|
||||
break;
|
||||
|
||||
case 'table-updated':
|
||||
console.log('[WebSocket] table-updated:', data.tableId);
|
||||
// console.log('[WebSocket] table-updated:', data.tableId);
|
||||
if (tableUpdateSubscribers[data.tableId]) {
|
||||
tableUpdateSubscribers[data.tableId].forEach(cb => cb(data));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log('❓ [WebSocket] Неизвестный тип сообщения:', data.type);
|
||||
// console.log('❓ [WebSocket] Неизвестный тип сообщения:', data.type);
|
||||
this.emit('unknown-message', data);
|
||||
}
|
||||
}
|
||||
|
||||
// Подписка на события
|
||||
on(event, callback) {
|
||||
console.log('🔌 [WebSocket] Подписка на событие:', event);
|
||||
// console.log('🔌 [WebSocket] Подписка на событие:', event);
|
||||
if (!this.listeners.has(event)) {
|
||||
this.listeners.set(event, []);
|
||||
}
|
||||
this.listeners.get(event).push(callback);
|
||||
console.log('🔌 [WebSocket] Количество слушателей для', event, ':', this.listeners.get(event).length);
|
||||
// console.log('🔌 [WebSocket] Количество слушателей для', event, ':', this.listeners.get(event).length);
|
||||
}
|
||||
|
||||
// Отписка от событий
|
||||
@@ -208,20 +184,20 @@ class WebSocketService {
|
||||
|
||||
// Эмиссия событий
|
||||
emit(event, data) {
|
||||
console.log('🔌 [WebSocket] Эмиссия события:', event, 'с данными:', data);
|
||||
// console.log('🔌 [WebSocket] Эмиссия события:', event, 'с данными:', data);
|
||||
if (this.listeners.has(event)) {
|
||||
const callbacks = this.listeners.get(event);
|
||||
console.log('🔌 [WebSocket] Количество колбэков для', event, ':', callbacks.length);
|
||||
// console.log('🔌 [WebSocket] Количество колбэков для', event, ':', callbacks.length);
|
||||
callbacks.forEach((callback, index) => {
|
||||
try {
|
||||
console.log('🔌 [WebSocket] Выполняем колбэк #', index, 'для события', event);
|
||||
// console.log('🔌 [WebSocket] Выполняем колбэк #', index, 'для события', event);
|
||||
callback(data);
|
||||
} catch (error) {
|
||||
console.error(`❌ [WebSocket] Ошибка в обработчике события ${event}:`, error);
|
||||
// console.error(`❌ [WebSocket] Ошибка в обработчике события ${event}:`, error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log('🔌 [WebSocket] Нет слушателей для события:', event);
|
||||
// console.log('🔌 [WebSocket] Нет слушателей для события:', event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,7 +209,7 @@ class WebSocketService {
|
||||
}
|
||||
this.isConnected = false;
|
||||
this.listeners.clear();
|
||||
console.log('🔌 [WebSocket] Отключен');
|
||||
// console.log('🔌 [WebSocket] Отключен');
|
||||
}
|
||||
|
||||
// Получение статуса соединения
|
||||
@@ -249,7 +225,7 @@ class WebSocketService {
|
||||
|
||||
// Создаем единственный экземпляр
|
||||
const websocketService = new WebSocketService();
|
||||
console.log('🔌 [WebSocket] Сервис создан');
|
||||
// console.log('🔌 [WebSocket] Сервис создан');
|
||||
|
||||
// Подписчики на обновления таблиц: tableId -> [callback]
|
||||
const tableUpdateSubscribers = {};
|
||||
@@ -269,17 +245,17 @@ export default {
|
||||
websocketService,
|
||||
onTableUpdate,
|
||||
};
|
||||
console.log('🔌 [WebSocket] Экспорт завершен');
|
||||
// console.log('🔌 [WebSocket] Экспорт завершен');
|
||||
|
||||
// Автоматически подключаемся при загрузке модуля
|
||||
console.log('🔌 [WebSocket] Автоматическое подключение...');
|
||||
// console.log('🔌 [WebSocket] Автоматическое подключение...');
|
||||
setTimeout(() => {
|
||||
console.log('🔌 [WebSocket] Подключаемся через 1 секунду...');
|
||||
// console.log('🔌 [WebSocket] Подключаемся через 1 секунду...');
|
||||
websocketService.connect();
|
||||
}, 1000);
|
||||
|
||||
// Добавляем периодическую проверку состояния соединения
|
||||
setInterval(() => {
|
||||
const status = websocketService.getStatus();
|
||||
console.log('🔌 [WebSocket] Статус соединения:', status);
|
||||
// console.log('🔌 [WebSocket] Статус соединения:', status);
|
||||
}, 10000); // Проверяем каждые 10 секунд
|
||||
Reference in New Issue
Block a user