[英]HttpWebRequest & Long Polling: how can I tell if a Long Polling connection has been established?
我需要在应用程序和服务器之间建立长轮询连接。 我正在使用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秒,因为应用程序应该坐下来等待服务器的回复。
我的问题是,是否有什么方法可以让我立即知道与服务器的连接已成功建立(当然不断开与服务器的连接)?
请帮忙。 谢谢。
我终于使用WebSocket4Net使用WebSocket而不是Long Polling,它可以工作:
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();
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.