Вот что вы можете сделать, функциональность довольно проста. Например, я использую один консольный клиент и одно веб-приложение.
Вот мой код сервера SignalR:
class Program
{
static void Main(string[] args)
{
string url = "http://localhost:8081/";
var server = new Server(url);
server.MapHubs();
server.Start();
Console.WriteLine("SignalR server started at " + url);
while (true)
{
ConsoleKeyInfo ki = Console.ReadKey(true);
if (ki.Key == ConsoleKey.X)
{
break;
}
}
}
public class CollectionHub : Hub
{
public void Subscribe(string groupName)
{
Groups.Add(Context.ConnectionId, groupName);
Console.WriteLine("Subscribed to: " + collectionName);
}
public Task Unsubscribe(string groupName)
{
return Clients[groupName].leave(Context.ConnectionId);
}
public void Publish(string message, string groupName)
{
Clients[groupName].flush("SignalR Processed: " + message);
}
}
Для завершения прослушивания нам необходимо сделать следующее.
1) Создать концентраторное соединение с URL-адресом, где прослушивает сервер SignalR.
2) Создайте прокси-класс для вызова функций в CollectionHub, который мы создали на сервере.
3) Зарегистрируйте событие и обратный вызов, чтобы сервер мог вызывать клиента и уведомлять об обновлениях.Как вы можете, имя события - «Сброс», если вы помните, что сервер вызывает эту функцию в функции публикации, чтобы обновить сообщение для клиентов.
4) Запустите концентратор и дождитесь завершения соединения.
5) Мы можем вызвать любой открытый метод в объявленном в Hub, используя метод Invoke, передав имя функции и аргументы.
Ниже приведен пример кода для получения обновлений в веб-клиенте
<script type="text/javascript">
$(function () {
var connection = $.hubConnection('http://localhost:8081/');
proxy = connection.createProxy('collectionhub')
connection.start()
.done(function () {
proxy.invoke('subscribe', 'Product');
$('#messages').append('<li>invoked subscribe</li>');
})
.fail(function () { alert("Could not Connect!"); });
proxy.on('flush', function (msg) {
$('#messages').append('<li>' + msg + '</li>');
});
$("#broadcast").click(function () {
proxy.invoke('Publish', $("#dataToSend").val(), 'Product');
});
});
</script>
Вы можете установить Javascript-клиент SignalR из Nuget, и он установит все необходимые js-файлы.
Дайте мне знать, если вам нужна дополнительная помощь.