Я новичок в signalR.Я разрабатываю простое приложение в signalR. Требование заключается в том, что signalR необходимо обновлять текущее время для клиента несколько раз с некоторой задержкой времени. Пока я запущен, код я получаю ответ сервера только на время. Это не повторяется снова и снова. Мне нужно обратное обращение к тому жеHubclass для обновления текущего времени для клиента снова и снова!Как добавить функцию callBack для моего hubClass в signalR для обновления текущего состояния работы клиенту с задержкой по времени?
вот мой код: -
Javascript код клиента: -
<body>
<div class="container">
<input type="hidden" id="name" />
</div>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function() {
var chat = $.connection.timeHub;
chat.client.broadcastMessage = function (name,current) {
var now = current;
console.log(current);
$('div.container').append('<p><strong>'+name+"="
+ now + '</strong></p>');
};
$("#name").val(prompt("Enter the UserName", ""));
$.connection.hub.start().done(function() {
chat.server.send($("#name").val());
});
});
</script>
</body>
HubClass: -
public class timeHub : Hub
{
public void send(string name)
{
while(true)
{
string current = DateTime.Now.ToString("HH:mm:ss:tt");
Clients.All.broadcastMessage(name,current);
Console.WriteLine(current);
Console.ReadLine();
System.Threading.Thread.Sleep(3000);
send(name);
}
}
}
MyOwin Startup Класс: -
[assembly: OwinStartup(typeof(Time.Startup))]
namespace Time
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
Как я добавляю функцию обратного вызова для моего HubClass в Javascript Client Code в SignalR.
вот мой выходной ток без функции обратного вызова и timedelay: -
но signalR и .net приложения клиента или рабочим fine.I нужно время задержки для hubclass и обратного вызов класса samehub периодически ?
Можно ли обратного вызова того же класса концентратора в сервере с некоторой задержкой во времени? Для этого добавлена временная задержка в hubclass. и я вызываю hubclass на сервере. Это не сработает. Может ли кто-нибудь предоставить мне решение для этого?
Спасибо hex. Для этого я добавил таймер внутри класса концентратора. и установите цикл с рекурсивными функциями. Теперь решение работает. – creator
@ G.Thirunavukkarasu Вы должны фактически транслировать время клиентам извне хаба. На сервере создайте класс, в котором у вас есть hubcontext. таймер и метод делегата для таймера. Метод получит текущее время и будет использовать hubcontext для вызова сообщения broadcastMessage. Вы не должны устанавливать таймер/цикл внутри класса концентратора. Проверьте эту ссылку MSDN, где они подробно рассмотрят этот вопрос: https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#callfromoutsidehub – hexterminator
штраф hex.I будет пройти через это. – creator