Я установил концентратор SignalR для связи между сервером и клиентом. Код на стороне сервера-концентратора хранится в классе Hooking.cs. Я хочу, чтобы вы могли вызвать метод, определенный в Hooking.cs, чтобы я мог передавать сообщения любым подключенным клиентам из любого места в моем приложении. Кажется, что для каждого вызова клиент/сервер создается новый экземпляр Hooking.cs, поэтому я надеялся, что смогу использовать что-то вроде
var hooking = new Hooking();
hooking.Test();
с помощью метода Test(), определенного в Hooking.cs, таких как
public static void Test() {
Clients.test()
}
и с javascript на стороне клиента
var hooking = $.connection.hooking;
hooking.test = function() { alert("test worked"); };
$.connection.hub.start()
К сожалению, это не так просто, поскольку клиенты не являются статическими, поэтому недоступны из статического метода.
Просматривая исходный код SignalR, я столкнулся с методом, который выглядел многообещающим, Hubs.Invoke(string hubName, string method, params object[] args)
, поэтому я надеюсь, что смогу использовать что-то вроде Hubs.Invoke("Hooking", "Test")
, но я не могу заставить его работать.
Любая помощь с этим была бы чрезвычайно оценена