J'ai mis en place un hub SignalR pour communiquer entre le serveur et le client. Le code côté serveur du hub est stocké dans une classe appelée Hooking.cs. Ce que je veux, c'est être capable d'appeler une méthode définie dans Hooking.cs pour me permettre de diffuser des messages à tous les clients connectés depuis n'importe quel endroit de mon application. Il semble qu'une nouvelle instance de Hooking.cs soit créée pour chaque appel client/serveur, j'avais donc espéré pouvoir utiliser quelque chose comme
var hooking = new Hooking();
hooking.Test();
avec la méthode Test() définie dans Hooking.cs telle que
public static void Test() {
Clients.test()
}
et avec un javascript côté client
var hooking = $.connection.hooking;
hooking.test = function() { alert("test worked"); };
$.connection.hub.start()
Malheureusement, ce n'est pas aussi simple, car Clients n'est pas statique et n'est donc pas accessible depuis une méthode statique.
En parcourant le code source de SignalR, je suis tombé sur une méthode qui semblait prometteuse, Hubs.Invoke(string hubName, string method, params object[] args)
donc j'espère pouvoir utiliser quelque chose comme Hubs.Invoke("Hooking", "Test")
mais je n'arrive pas à le faire fonctionner.
Toute aide à ce sujet serait très appréciée.
0 votes
Mais peut-être pouvez-vous m'aider ;) Une idée sur la façon d'exécuter votre code js dans votre message de diffusion pour tous les autres clients, et non pour l'appelant d'origine qui a émis le message ? :)
0 votes
Malheureusement, je ne le fais pas. J'ai géré cela côté client, en renvoyant l'identifiant du client avec la réponse et en n'appelant pas la fonction si les identifiants correspondent.