2016-12-26 4 views
1

Мы все знаем, что signalR использует открытое соединение для связи с клиентами. Я хочу знать, как я могу отправить сообщение клиентам без какого-либо запроса. Например, за каждый промежуток времени или любой сервер событий передают данные клиентам.как отправить сообщение клиенту в signalR без запроса клиента

ответ

0

Я думаю, что вам нужна трансляция всем пользователям. В следующем примере показан базовый код, который передает массаж всем клиенту. Каждое время, которое вы вызываете SendNotifications(" massage"), все пользователи получают ваш массаж.

public class EmployeeHub : Hub 
{ 

    public void SendNotifications(string message) 
{ 
    Clients.All.receiveNotification(message); 
} 
} 

и веб-страницы:

<body> 
<input id="text1" type="text" /> 
<input id="button1" type="button" value="Send" /> 
<ul id="discussion"> 
</ul> 
<!--Reference the jQuery library. --> 
<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script> 
<!--Reference the SignalR library. --> 
<script src="Scripts/jquery.signalR-1.1.3.js" type="text/javascript"></script> 
<!--Reference the autogenerated SignalR hub script. --> 
<script src="signalr/hubs"></script> 
<script type="text/javascript"> 
    $(function() { 
     // Declare a proxy to reference the hub. 
     var notifications = $.connection.employeeHub; 
     // Create a function that the hub can call to broadcast messages. 
     notifications.client.receiveNotification = function (message) { 
      // alert(" says '" + message + "'"); 
      // Html encode display name and message.     
      var encodedMsg = $('<div />').text(message).html(); 
      // Add the message to the page. 
      $('#discussion').append('<li>' + encodedMsg + '</li>'); 
     }; 
     // Start the connection. 
     $.connection.hub.start().done(function() { 

     }); 
    }); 
</script> 

+0

Несмотря на то, что этот код не будет работать в примерах, перечисленных в вопросе (например, в случае таймера или другого события на стороне сервера), так что это downvoting. – thab

1

Использование this answer и запустить фоновую задачу на серверной стороне.

Не внутри концентратора, так как жизненный цикл they'r предназначен для каждого запроса.

+0

Этот ответ правильный – thab