2014-01-23 3 views
0

나는 SignalR 2.0.0 Win2012 iis8을 서로 다른 두 개의 ips가있는 두 개의 환경에서 사용합니다. 하나의 환경 서비스가 가동되고 두 번째로 (의도적으로) 은 웹 소켓 프로토콜을 사용합니다.SignalR 연결 오류

다음과 같은 시나리오가 있습니다. 첫 번째 환경에 연결하고 두 번째 환경에 연결할 때. 첫 번째 환경에서 연결이 끊긴 두 번째 환경에 연결하려고하면 오류가 발생합니다 (올바른 동작) 첫 번째 환경에 다시 연결하려고하지만 여전히 동일한 오류가 발생합니다.

오류는 "협상 요청 중 오류"입니다. 브라우저를 새로 고친 후 첫 번째 환경에 성공을 다시 연결할 수 있습니다.

내가 뭘 잘못하고 있니? 당신은 당신의 첫 번째 연결 참조를 유지하지 않을

function connect(host) 
{ 

    var hubConnection = $.hubConnection.(''); 

    hubConnection.url = host; 

    hubConnection.start() 
       .done(open) 
       .fail(error); 
} 
function open() 
{ 
    console.log('login success') 
} 
function disconnect() 
{ 
    var self = this, 
    hubConnection = $.hubConnection(""); 
    console.log('disconnect ') 
    hubConnection.stop(true, true); 
} 
function error(error) 
{ 
    var self = this, 
    hubConnection = $.hubConnection(""); 
    console.log('connection error ') 
    if(error && hubConnection.state !== $.connection.connectionState.connected)  
    { 
    ..... 
    ..... 
    //logic detemninate wich environment ip was previous 
    connect(environment ip) 
    } 
} 
//occured when button disconnect clicked 
function disconnectFromFirstEnvironmentAndConnectToSecond() 
{ 
disconect(); 
connect(second environment ip); 
} 
    ..... 
    ..... 
    connect(first environment ip); 
+0

우리가 도울 수 있도록 코드를 추가하십시오 –

+0

질문에 코드를 추가했습니다. 감사합니다. – user3227750

답변

0

:

이 내 코드의 일부입니다.

당신은 HubConnection을 만들고 나중에 사용할 수있는 범위에서 캡처하지 마십시오. 따라서 나중에 연결을 끊으면 connection.stop은 원래 시작된 HubConnection에서 stop을 호출하지 않기 때문에 아무 작업도 수행하지 않습니다.

이렇게하면 궁극적으로 동시에 열리는 요청이 너무 많아 져서 서버와 협상 할 수 없으므로 오류가 발생할 수 있습니다.

연결을 중지/시작하는 방법을 수정하는 것이 좋습니다. 다음으로 문제가 계속 발생하면 네트워크 트래픽을 검사하여 유효한 요청이 이루어지고 있는지 확인합니다.

+0

죄송합니다. 제 코드에서 해결할 수 있습니까? 감사합니다. – user3227750

+0

안녕하세요, Taylor, 이전 질문에 대한 태도를 보여줄 수 있습니까? – user3227750