2017-09-18 16 views
1

내 응용 프로그램과 서버간에 긴 폴링 연결을 만들어야합니다. 나는 HttpWebRequest 클래스를 사용하고 그것은 작동합니다HttpWebRequest & Long Polling : Long Polling 연결이 설정되었는지 어떻게 알 수 있습니까?

for (; ;) 
    { 
     System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 

     request.Timeout = 100000; 
     request.Method = "GET"; 
     request.KeepAlive = true; 
     request.Credentials = System.Net.CredentialCache.DefaultCredentials; 

     var response = request.GetResponse(); 
     : 
     : (wait for response...) 
    } 

나는 서버가 온라인 상태인지 여부를 알 필요가있다. 오프라인 상태 인 경우 응용 프로그램에서 즉시 사용자에게 알릴 필요가 있습니다. 그러나 서버가 오프라인 인 경우 GetResponse()는 제한 시간에 도달 할 때까지 오류를 반환하지 않습니다.

응용 프로그램이 서버의 응답을 기다리고 기다려야하기 때문에 시간 제한을 0.1 초라고 줄일 수 없습니다.

제 질문은 서버 연결이 성공적으로 이루어 졌을 때 (서버와의 연결을 끊지 않고) 즉시 알릴 수있는 방법이 있습니까?

도와주세요. 고맙습니다.

답변

0

는 드디어 WebSocket4Net를 사용하여, 롱 폴링 대신 웹 소켓을 사용하고, 그것을 작동 :

WebSocket websocket = new WebSocket(url); 

websocket.Opened += (sender, e) => 
{ 
    // successfully connected, do sth (this is what i need) 
}; 

websocket.Error += (sender, e) => 
{ 
    Console.WriteLine(e.Exception.Message); 
}; 

websocket.MessageReceived += (sender, e) => 
{ 
    string msg = e.Message; 
}; 

websocket.Open(); 

감사합니다.