我需要在我的应用程序和服务器之间建立长轮询连接。我正在使用HttpWebRequest类,它可以工作:
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 :(得分:0)
我最终使用WebSocket而不是Long Polling,使用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();
谢谢。