이것은 각도 j와 웹 API가있는 단일 페이지 응용 프로그램입니다. 백그라운드 프로세스가 실행 중인지 확인하고 클라이언트에 메시지를 푸시하는 메서드 server.CheckIfRunning()을 호출하는 페이지에서 signalr을 구현했습니다. 처음으로 해당 페이지로 이동하면 알림이 성공적으로 수신됩니다. 그러나 다른 페이지로 이동하여 다시 돌아 오면 페이지에서 server.CheckIfProcessRunning()을 올바르게 호출하고 서버가 클라이언트로 푸시됩니다. 그러나 클라이언트는 알림을받지 못합니다.Signalr 2 푸시가 단일 페이지 응용 프로그램에 실패 함
클라이언트 측 코드 :
var hub = $.connection.tRAHub;
hub.client.NotifyAlreadyRunning = function (message) {
$scope.$apply(function() {
$scope.status=message;
});
};
$.connection.hub.start()
.done(function() {
hub.server.checkIfRunning($.connection.hub.id);
});
서버 측 코드 : 그 페이지로 이동 할 때마다
public class TRAHub : Hub
{
public void CheckIfRunning(string id)
{
var isRunning = CheckIfProcessRunning();//this method checks if the process is running. code not shown
if (isRunning)
{
var client = Clients.Client(id);
client.NotifyAlreadyRunning(id);
}
}
}
참고로, 클라이언트 측 코드가 실행됩니다. 누구든지 내가 잘못 한 것을 알려 주실 수 있습니까?
당신이 OnConnecred을 무시하고 해당 클라이언트가 잘못 연결되어 있습니다보고 서버와 클라이언트 측에 이벤트를 OnDisconnected 수 은? 그런데, EnableDetailedErrors를 사용하여 클라이언트 측에 예외가 있는지 확인할 수 있습니다. – cassandrad
감사합니다. 내가 onconnected 시도하고 서버에 연결되어 있지 않은 methos에 그들은 잘 작동하는 것. 연결됩니다. 다른보기로 이동하면 화면이 깨지지 않습니다. 그러나 내가이 견해로 돌아올 때 다시 연결됩니다. 이것은 문제를 일으키는가? 내가보기를 떠나서 연결을 해제해야합니까? 나는 클라이언트 측에서의 이벤트를 내포하려고 노력할 것이고, 내가 뭔가를 찾을 수 있는지를 enabledetailederrors가 볼 수있게 할 것이다. –