내 응용 프로그램이 재설정 될 때마다 signalR이 연결이 끊어 지지만 다시 연결되지 않습니다.SignalR 연결이 끊어지고 다시 연결되지 않음
각 작업이 완료 될 때 클라이언트에 업데이트를 보내는 오래 실행되는 서버 작업이 있습니다. 위의 코드
// inside action executed on every completion of a task
var h = new ForceHub();
h.MessageSent(email);
는 응용 프로그램이 다시 설정됩니다 때 (내가 Web.config의를 터치하여이 문제를 에뮬레이션 할 수 있습니다) 업데이트를 전송 중지합니다.
나는 클라이언트에 다시 연결하는 방법을 원합니다. 현재 사용자는 업데이트를 다시 받으려면 페이지를 다시로드해야합니다. 여기
내가 연결 및 다시 연결 이벤트 그러나 Web.config의 접촉 후에, 나는이 트리거 이러한 이벤트가 표시되지 않습니다, 시작 후 트리거 볼 수 있습니다 내 허브 정의public class ForceHub : Hub
{
public void MessageSent(string text)
{
GetContext().Clients.All.sent(text);
}
public void UpdateStatus(string msg)
{
GetContext().Clients.All.status(msg);
}
IHubContext GetContext()
{
return GlobalHost.ConnectionManager.GetHubContext<ForceHub>();
}
public override Task OnConnected()
{
try {
IoC.Resolve<ILogger>().Info("SignalR Connected -----------");
}catch (Exception){}
return base.OnConnected();
}
public override Task OnDisconnected()
{
try {
IoC.Resolve<ILogger>().Info("SignalR Disconnected -----------");
}
catch (Exception) { }
return base.OnDisconnected();
}
public override Task OnReconnected()
{
try {
IoC.Resolve<ILogger>().Info("SignalR Re-Connected -----------");
}
catch (Exception) { }
return base.OnReconnected();
}
}
입니다 .
내가 클라이언트에서이 잡기했지만,이 이벤트는 tirggered되지 않습니다
$.connection.hub.disconnected(function() {
console.error('signalR disconnected, retrying connection');
logError('Signal lost.');
setTimeout(function() { connection.start(); }, 1000);
});
갱신 나는 또한 트리거됩니까 주 Changed 이벤트로 구부려
을하지만, 재를 아래의 연결 시도가 작동하지 않습니다.
$.connection.hub.stateChanged(function (state) {
console.debug('signalR state changed', state);
if (state.newState == 1) {
console.debug('restarting');
setTimeout(function() { $.connection.hub.start(); }, 1000);
}
});
이 이벤트가 두 번 트리거됩니다 : newState는 2, 다음 1
희망이 도움이됩니다. 나는 장시간 실행되는 작업을 시도하지는 않았지만 GET으로 히트 할 때 코드 숨김이 모든 클라이언트에게 메시지를 보내는 간단한 추가 페이지를 사용했다. 이것은 "대역 외"작업을 시뮬레이트하고 응용 프로그램 재설정 후에도 정상적으로 작동하며 클라이언트는 정상적으로 통지를받습니다. 나는 SignalR이 연결을 느슨하게하지 않는다고 말하고 싶다. 그래서 당신은 그 사건을 보지 못한다. 어쩌면 문제가 다른 곳에서있을 수 있는가? – Wasp
@Wasp web.config를 수정 해 보셨습니까? –
물론, 나는 내 "직업"페이지 – Wasp