première version avec socketio
This commit is contained in:
89
main.js
89
main.js
@@ -3,6 +3,7 @@ const path = require('path');
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const signalR = require('@microsoft/signalr');
|
||||
const ConnectionManager = require('./connection-manager');
|
||||
|
||||
let mainWindow;
|
||||
let config;
|
||||
@@ -87,58 +88,25 @@ function createWindow() {
|
||||
});
|
||||
}
|
||||
|
||||
// === GESTION SIGNALR ===
|
||||
// === GESTION SIGNALR/WEBSOCKET ===
|
||||
function initializeSignalR() {
|
||||
if (!config.signalR || !config.signalR.enabled) {
|
||||
console.log('SignalR désactivé dans la configuration');
|
||||
console.log('SignalR/WebSocket désactivé dans la configuration');
|
||||
signalRStatus = 'disabled';
|
||||
sendSignalRStatus();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Créer la connexion SignalR
|
||||
signalRConnection = new signalR.HubConnectionBuilder()
|
||||
.withUrl(config.signalR.serverUrl)
|
||||
.withAutomaticReconnect([0, 2000, 5000, 10000, 30000])
|
||||
.configureLogging(signalR.LogLevel.Information)
|
||||
.build();
|
||||
|
||||
// Gérer les changements d'état
|
||||
signalRConnection.onreconnecting(() => {
|
||||
console.log('SignalR: Reconnexion en cours...');
|
||||
logSignalR('🔄 SignalR en reconnexion...', {
|
||||
previousStatus: signalRStatus,
|
||||
timestamp: new Date().toISOString()
|
||||
});
|
||||
signalRStatus = 'connecting';
|
||||
sendSignalRStatus();
|
||||
});
|
||||
|
||||
signalRConnection.onreconnected(() => {
|
||||
console.log('SignalR: Reconnecté');
|
||||
logSignalR('🔗 SignalR reconnecté avec succès', {
|
||||
connectionId: signalRConnection.connectionId,
|
||||
timestamp: new Date().toISOString()
|
||||
});
|
||||
signalRStatus = 'connected';
|
||||
sendSignalRStatus();
|
||||
});
|
||||
|
||||
signalRConnection.onclose(() => {
|
||||
console.log('SignalR: Connexion fermée');
|
||||
logSignalR('🔌 SignalR déconnecté', {
|
||||
lastConnectionId: signalRConnection.connectionId,
|
||||
timestamp: new Date().toISOString()
|
||||
});
|
||||
signalRStatus = 'disconnected';
|
||||
sendSignalRStatus();
|
||||
});
|
||||
|
||||
// Configurer les méthodes SignalR
|
||||
setupSignalRMethods();
|
||||
// Utiliser le ConnectionManager avec fallback automatique SignalR → WebSocket
|
||||
const connectionManager = new ConnectionManager(config.ServerIp || config.signalR.serverUrl.replace('http://', '').replace('/signalR', ''));
|
||||
|
||||
// Démarrer la connexion
|
||||
// La connexion sera établie plus tard avec fallback automatique
|
||||
signalRConnection = connectionManager;
|
||||
|
||||
// Les handlers d'état seront configurés après la connexion
|
||||
|
||||
// Démarrer la connexion (les handlers seront configurés après)
|
||||
startSignalRConnection();
|
||||
|
||||
} catch (error) {
|
||||
@@ -148,7 +116,14 @@ function initializeSignalR() {
|
||||
}
|
||||
}
|
||||
|
||||
function setupSignalRMethods() {
|
||||
function setupSignalRHandlers() {
|
||||
// Configuration des handlers après la connexion
|
||||
const connection = signalRConnection.getConnection();
|
||||
if (!connection) {
|
||||
console.error('Pas de connexion active pour configurer les handlers');
|
||||
return;
|
||||
}
|
||||
|
||||
// === LOGGER UNIVERSEL POUR TOUS LES MESSAGES SIGNALR ===
|
||||
// Intercepter TOUS les messages reçus du serveur pour découvrir les événements disponibles
|
||||
|
||||
@@ -185,7 +160,7 @@ function setupSignalRMethods() {
|
||||
|
||||
// Écouter tous les événements possibles et logger ce qu'on reçoit
|
||||
possibleEvents.forEach(eventName => {
|
||||
signalRConnection.on(eventName, (...args) => {
|
||||
connection.on(eventName, (...args) => {
|
||||
// Logger dans la console avec formatage
|
||||
console.log('═══════════════════════════════════════════════════════════');
|
||||
console.log(`📨 MESSAGE SIGNALR REÇU: ${eventName}`);
|
||||
@@ -323,18 +298,28 @@ async function startSignalRConnection() {
|
||||
try {
|
||||
signalRStatus = 'connecting';
|
||||
sendSignalRStatus();
|
||||
logSignalR('🔌 Tentative de connexion SignalR...', {
|
||||
serverUrl: config.signalR.serverUrl,
|
||||
logSignalR('🔌 Tentative de connexion au serveur...', {
|
||||
serverUrl: config.ServerIp || config.signalR.serverUrl,
|
||||
status: 'connecting'
|
||||
});
|
||||
|
||||
await signalRConnection.start();
|
||||
console.log('SignalR: Connexion établie');
|
||||
logSignalR('✅ Connexion SignalR établie avec succès', {
|
||||
connectionId: signalRConnection.connectionId,
|
||||
// Le ConnectionManager gère le fallback automatiquement
|
||||
const connection = await signalRConnection.connect();
|
||||
|
||||
// Déterminer quel type de connexion a réussi
|
||||
const connectionInfo = signalRConnection.getConnectionInfo();
|
||||
|
||||
console.log(`Connexion établie via ${connectionInfo.type}`);
|
||||
logSignalR(`✅ Connexion établie avec succès (${connectionInfo.type})`, {
|
||||
connectionType: connectionInfo.type,
|
||||
isWebSocketFallback: connectionInfo.isWebSocketFallback,
|
||||
status: 'connected',
|
||||
serverUrl: config.signalR.serverUrl
|
||||
serverUrl: connectionInfo.serverUrl
|
||||
});
|
||||
|
||||
// Maintenant configurer les handlers sur la connexion active
|
||||
setupSignalRHandlers();
|
||||
|
||||
signalRStatus = 'connected';
|
||||
sendSignalRStatus();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user