'Erreur: le délai d'attente du serveur s'est écoulé sans recevoir de message du serveur.'.
J'essaie de déboguer un code côté serveur et, ce faisant, le client est déconnecté en moins d'une minute.
J'utilise uniquement SignalR pour communiquer avec les clients, sans contrôleur pour le moment.
Y at-il un paramètre qui peut désactiver le délai d’expiration ou au moins le rendre plus long qu’il ne l’est actuellement?
mon launchSettings.json:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:26793",
"sslPort": 44386
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HTTPS_PORT": "44386"
}
},
"Api": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000"
}
}
}
}
Merci à @Arhire Ionut
Voici comment augmenter le délai d'attente du client Javascript
hubConnection.serverTimeoutInMilliseconds = 100000; // 100 second
Plus de détails ici => https://github.com/aspnet/Docs/issues/6885
Ce que @MahmoudFarhat a mentionné dans une autre réponse est correct. Mais regardez aussi ce lien et lisez mes commentaires ci-dessous.
Si signalR s'est déconnecté, essayez de rétablir la connexion. La connexion peut être interrompue pour plusieurs autres raisons, notamment le changement de réseau d'utilisateur. Par exemple, si l'utilisateur utilise un téléphone portable et est connecté au réseau Wi-Fi domestique/professionnel, mais décide de se connecter à une connexion de données cellulaire.
Pour vous reconnecter, vous pouvez utiliser les éléments suivants (fonctionne comme un charme pour moi):
// re-establish the connection if connection dropped
connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));
où startSignalRConnection
est:
const startSignalRConnection = connection => connection.start()
.then(() => console.info('Websocket Connection Established'))
.catch(err => console.error('SignalR Connection Error: ', err));
et la connexion est
const connection = new HubConnectionBuilder()
.withUrl(connectionHub, options)
.withHubProtocol(protocol)
.build();