Мы все знаем, что signalR
использует открытое соединение для связи с клиентами. Я хочу знать, как я могу отправить сообщение клиентам без какого-либо запроса. Например, за каждый промежуток времени или любой сервер событий передают данные клиентам.как отправить сообщение клиенту в signalR без запроса клиента
1
A
ответ
0
Вы можете ссылаться на эту ссылку Reference.
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>
1
Использование this answer и запустить фоновую задачу на серверной стороне.
Не внутри концентратора, так как жизненный цикл they'r предназначен для каждого запроса.
+0
Этот ответ правильный – thab
Несмотря на то, что этот код не будет работать в примерах, перечисленных в вопросе (например, в случае таймера или другого события на стороне сервера), так что это downvoting. – thab