Utilisation de SignalR avec Azure Service Fabric

Est-il possible d’utiliser signalR avec Service Fabric fourni par Microsoft? J’essaie de connecter une application UWP et une application angularJS à mon service fiable sans état hébergé dans un cluster Azure via une connexion signalR / websocket. Mais les deux ne sont pas capables d’ouvrir une telle connexion. Sur ma machine locale, tout fonctionne bien.

Y a-t-il quelque chose de spécial à considérer lors de l’utilisation de signalR / websockets avec Service Fabric? Y a-t-il un exemple?

Vous devez configurer l’équilibreur de charge sur l’ip du client. Ensuite, l’utilisateur accédera toujours au même nœud et les autres utilisateurs à d’autres nœuds. La relation utilisateur-noeud sera persistante.

Vous devez activer le paramètre inter-domaines pour que signalR l’appelle à partir d’autres applications.

appBuilder.Map("/signalr", map => { map.UseCors(CorsOptions.AllowAll); var hubConfiguration = new HubConfiguration() { EnableJSONP = true, EnableDetailedErrors = true, EnableJavaScriptProxies = true }; map.RunSignalR(hubConfiguration); }); 

Ce code se trouve dans le fichier readme.txt que nous obtenons après l’installation du paquet Nuget pour SignalR. Pour la fonctionnalité interdomaine, vous devez également installer le package de nuget Cores.

Après avoir déployé cette application, vous pouvez constater que certains appels à signalR échouent et que certains réussissent. Par défaut, le nombre d’instances dans le service Reliable sans état est -1. Ainsi, plusieurs instances seront créées pour le service.

Depuis la méthode signaleR Connection.Start (), trois API SingalR seront appelées. Ces appels doivent avoir lieu au cours de la même session afin de fonctionner correctement. Lorsque nous appelons ces trois API dans Service Fabric avec plusieurs instances, l’appel peut être traité dans différents nœuds et donc différentes sessions, ce qui entraîne un échec de la connexion singalR.

Une solution consiste à définir le nombre d’instances 1 pour l’application de structure de service sans état. Je ne pense pas que ce soit une solution élégante.