잠재적으로 여기에 중복 스레드를 만드는 것은 유감 스럽지만 발견 한 다른 예제를 따라 가면서 필요한 것을 수행하기 위해 웹 애플리케이션을 얻을 수 없습니다. 이상적인 솔루션
는 데이터베이스에서 데이터를 가져 오기 및 데이터에 변경이 만 웹 페이지의 UI를 업데이트 표시되는 -SignalR을 사용하여 클라이언트에 데이터 푸시
옵션 1 :
내 목표는 다음 중 하나를 수행하는 것입니다 웹 페이지에. 예를 들어 사용자가 서비스 티켓을보고있는 경우 티켓을 변경하지 않는 한 해당 페이지의 UI를 업데이트하고 싶지 않습니다.
옵션 2 - 허용 가능한 해결책
데이터베이스에서 모든 x 초를 데이터 가져 오기 및 데이터는 웹 페이지의 UI를 업데이트 할 것을 사용합니다.
내 현재 구현 옵션 2은 다음과 같습니다. 그것은 데이터를 가져 오기 위해 60 초마다 비동기 HTTP 요청을 전송 포함 :
이// start checking for new messages every 60 seconds
setInterval(function() {
$.ajax({
async: true,
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "/AJAX_Handlers/CheckForNewMessages.ashx",
dataType: "json",
success: function (Result) {
var new_message_received = Result[0]["NewMessageReceived"];
if (new_message_received) {
$("#DIVMessageReminder").html("<strong>You have " + num_new_messages + " new message(s).</strong>");
$("#DIVMessageReminder").show();
}
else {
$("#DIVMessageReminder").hide();
}
}
});
}, 60000);
오히려 HTTP 요청을 60 초마다 보내는 것보다, 내가 클라이언트에 60 초마다 데이터를 밀어 SignalR을 사용하고 싶습니다.
Imports Microsoft.AspNet.SignalR
Public Class ServerTimeHub
Inherits Hub
Public Sub GetServerTime()
Dim current_time As String = Now.ToString()
Clients.All.updateTime(current_time)
End Sub
End Class
그리고 기본 텍스트 상자 :
<input id="TXTLongPollingTest" type="text" class="form-control" />
그리고 내 클라이언트 -
간단한 예를 들어, 내가 서버에 현재 시간을 얻을 수있는 방법으로 다음과 같은 허브를 만들었습니다 사이드 코드 :
var hub = $.connection.serverTimeHub;
hub.client.updateTime = function (new_time) {
$("#TXTLongPollingTest").val(new_time);
}
$.connection.hub.start().done(function() {
alert("connected to the SignalR hub");
hub.getServerTime();
}).fail(function (err) {
alert("failed to connect to SignalR hub: " + err);
});
처음에는 서버 시간을 한 번만 가져 오려고했습니다. 내 코드가 허브에 성공적으로 연결되지만 "Uncaught TypeError : hub.getServerTime이 함수가 아닙니다."라는 오류가 발생합니다. 그것이 내가 극복 할 수 없었던 첫 번째 문제입니다.
두 번째 문제는 다음과 같습니다. 허브가 매시간과 같이 일정한 간격으로 클라이언트에 현재 시간을 보내도록하려면 어떻게해야합니까?
다른 모든 예제와 매우 비슷하게 보일지라도, 이것이 저에게 효과적입니다. 도와 주셔서 정말 감사합니다! 문제가되는 데이터가 변경된 경우에만 새 데이터를 가져 오는 솔루션이 있는지를 알고 싶습니다. – freegem